Я пытаюсь запустить проект laravel на OS X. Я установил MySql с homebrew. Я пробовал поиск по Google, потому что я получаю эту ошибку:
SQLSTATE[HY000] [2002] No such file or directory
когда я пытаюсь сделать
php artisan migrate
И большинство ответов, которые я вижу, говорят, что php и MySql не могут общаться друг с другом. Я пытался увидеть, где я поступил неправильно, так как я думаю, что я следил за предыдущими сообщениями об этом, и он все еще не работает. Я создал страницу, которая просто делает это:
<?php phpinfo(); ?>
И я вижу такие вещи: в области «Настройка» я вижу:
'--with-mysql-sock=/tmp/mysql.sock' '--with-mysqli=mysqlnd' '--with-mysql=mysqlnd' '--with-pdo-mysql=mysqlnd' '--enable-pcntl' '--enable-zend-signals' '--enable-dtrace'
загруженный файл конфигурации:
/usr/local/etc/php/5.4/php.ini
Если я ls /tmp
, я вижу mysql.sock.
В этом файле php.ini я устанавливаю следующие строки: pdo_mysql.default_socket = / tmp / mysql.sock mysql.default_socket = /tmp/mysql.sock mysqli.default_socket = /tmp/mysql.sock
А затем в /usr/local/Cellar/mysql/5.6.16/my.cnf, я добавил следующую строку:
socket = /tmp/mysql.sock
Я перезапустил apache, а также проверил mysql. Я не видел никаких других советов, кроме соединения php и mysql. Я думаю, что есть две версии php в моей системе, потому что когда я установил mcrypt или что-то еще, что я не могу вспомнить, он установил другую версию php. Но когда я смотрю вывод phpinfo, я редактирую соответствующий файл php.ini. Я не знал, есть ли еще одна вещь, которую мне не хватает. Есть предположения? благодаря
У меня была аналогичная ошибка. Я использую MAMP и то, что решило мою проблему:
Для пользователей, которые ищут решение на XAMPP (протестировано и работает в Mac OS X),
Откройте терминал и создайте символическую ссылку:
sudo mkdir /var/mysql cd /var/mysql sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Другие решения, описанные здесь: http://pravams.com/2011/05/26/magento-pdo-exception/
После поиска я нашел этот пост:
Настройка Laravel на Mac php artisan Ошибка миграции: нет такого файла или каталога
Как только я добавил
'unix_socket' => '/tmp/mysql.sock',
к моему database.php в массиве mysql, он сработал. Не уверен точно, почему это работает, но это так.
Я нашел PHP на CentOS 6, построенном с mysql.default_socket=/var/lib/mysql/mysql.sock
но по какой-то причине pdo_mysql.default_socket=/tmp/mysql.sock
, которого не существует. Построение его с использованием --with-mysql-sock=/var/lib/mysql/mysql.sock
должно заставлять обе быть одинаковыми.
Также можно изменить php.ini
чтобы он содержал:
pdo_mysql.default_socket="/var/lib/mysql/mysql.sock"
… или ваше правильное расположение гнезда, конечно.
Я исправил его так. Просто добавьте строку. в проекте laravel APP => Config => database.php обновить
Соединения => mysql после строгого добавления ниже строки
'unix_socket' => "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock"
образец:-
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 'strict' => false, 'unix_socket' => "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock" ],
Это случилось со мной из ниоткуда, мое приложение (Laravel) отлично работало вчера и сегодня ушло с этой ошибкой (SQLSTATE [HY000] [2002] Нет такого файла или каталога).
После проверки того, что мой файл конфигурации не был поврежден, я подключился к моей панели управления (я использую VPS) и перезапустил сервер MySQL. Это сделало трюк, все снова в сети.
Нашел решение для пользователя Ampps:
У меня была такая же проблема, и я много раз искал, но не смог решить проблему, пока не посмотрел на мой конфигурационный файл MySql. В моем конфигурационном файле сокет находился в строке 21, и путь был
"/Applications/AMPPS/var/mysql.sock"
В приложении Ampps нажмите вкладку MySql, а затем нажмите кнопку конфигурации.
Вы также можете найти файл конфигурации в папке «/ Applications / AMPPS / mysql / etc»
Так просто я добавил
'unix_socket' => '/Applications/AMPPS/var/mysql.sock',
к моему database.php в массиве mysql, и это сработало для меня.
После строки хоста. Я тестировал с localhost и 127.0.0.1, и оба работали
Надеюсь, он тоже работает на вас.