CakePhp: нет такого файла или каталога (пытаясь подключиться через Unix: ///var/mysql/mysql.sock)
-
09-10-2019 - |
Вопрос
У меня было приложение CakePhP, работающее в My Local Machine (Mac OSX) на некоторое время, а затем внедренно, я понимаю, что не могу подключиться к MySQL.Sock.
Я получаю эту ошибку:
Warning (2): mysql_connect() [http://php.net/function.mysql-connect]: [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) [CORE/cake/libs/model/datasources/dbo/dbo_mysql.php, line 540]
Линия 540 dbo_mysql.php читает:
$this->connection = mysql_connect($config['host'] . ':' . $config['port'], $config['login'], $config['password'], true);
Я проверил, нет полетов //var/mysql/mysql.sock. Это на самом деле в /tmp/mysql.sock
Я попытался изменить свой php.ini.default, чтобы соответствовать вышеуказанному, но он уже установлен, чтобы посмотреть в / TMP / для локальных подключений. Почему и где происходит ошибка?
Кто-нибудь столкнулся с аналогичной ошибкой?
Спасибо,
Jonesy
Решение
Попробуйте пройти абсолютный путь файл mysql.sock в приложении / config / database.php
<?php
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'dbUser',
'password' => 'dbPassword',
'database' => 'dbName',
'prefix' => '',
'port' => '/path/to/mysql.sock'
);
}
Это лучше, чем запустить через IP для локального соединения, поскольку соединение сокета много, намного быстрее.
Другие советы
Если у вас проблемы с CakePhp 2.0, попробуйте следующее:
sudo mkdir /var/mysql
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock
В Phpcake 2.0 используйте «Unix_socket» вместо порта
<?php
class DATABASE_CONFIG {
var $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'dbUser',
'password' => 'dbPassword',
'database' => 'dbName',
'prefix' => '',
'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock', //Path for mac XAMPP
);
}