php artisan migrate, получил следующую ошибку:
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
NB: php -v – это 5.5, а mysql -v – 5.5 от терминала. Вот часть моего config / database.php
'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'essays', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ),
Я попытался заменить localhost 127.0.0.1 безрезультатно. Пожалуйста, помогите ..
Изменить: я добавил эти три строки в свой php.ini
mysql.default_socket = /var/run/mysqld/mysqld.sock mysqli.default_socket = /var/run/mysqld/mysqld.sock pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock
Я также добавил эту символическую ссылку:
sudo mkdir /var/mysql cd /var/mysql && sudo ln -s /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Но это не решило. Я также вытащил новый новый проект laravel из git и столкнулся с той же ошибкой после composer install
после чего php artisan migrate
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
Версия для Mac – 10.7.4
Если вы используете MAMP, обязательно добавьте ключ unix_socket
со значением пути, в котором mysql.sock
находится в MAMP.
'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock', 'database' => 'database', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ),
Прежде всего, получите свое местоположение unix_socket .
$ mysql -uroot -p
Введите свой пароль mysql и войдите в свой сервер mysql из командной строки.
mysql> show variables like '%sock%'; +---------------+---------------------------------------+ | Variable_name | Value | +---------------+---------------------------------------+ | socket | /opt/local/var/run/mysql5/mysqld.sock | +---------------+---------------------------------------+
Ваш unix_soket может отличаться.
Тогда у вас есть 2 решения для решения вашей проблемы:
(1) Измените config/database.php
'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'essays', 'username' => 'root', 'password' => 'root', 'unix_socket' => '/opt/local/var/run/mysql5/mysqld.sock', //Your sock got from above 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ),
(2) Измените свой php.ini, найдите файл php.ini
из
<? phpinfo();
Вы, возможно, установите много php с другой версией, поэтому, пожалуйста, не предполагайте местоположение своего файла php.ini, получите его из своей «phpinfo»;
Измените свой php.ini:
mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock mysqli.default_socket = /opt/local/var/run/mysql5/mysqld.sock pdo_mysql.default_socket = /opt/local/var/run/mysql5/mysqld.sock
Затем перезапустите apache или php-fpm.
Имела та же проблема, но теперь она работает для меня.
Если у кого-то все еще есть проблемы, попробуйте следующее:
bootstrap/start.php
содержит ваше фактическое имя хоста, а не имя вашего виртуального хоста. Введите hostname
в терминал, чтобы получить имя хоста. Поскольку это массив, я считаю, что вы можете ввести как свое имя хоста, так и имя (имена) вашего виртуального хоста (ов). Если вы используете XAMPP, решение:
'mysql' => array( 'driver' => 'mysql', 'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock', 'host' => 'localhost' )
Это работает для меня в Laravel 5.0, измените DB_HOST = 127.0.0.1: 33060 в .env-файле.
Другие ответы не работают …
Для Laravel 5.0+ измените localhost
на 127.0.0.1
в вашем .ENV-файле, прежде чем вы начнете играть с Unix-сокетами и т. Д. – это сработало для меня.
Noobs остерегайтесь: для тех, кто использует Laravel 5 и используя более старые учебные материалы, имейте в виду, что в предыдущих версиях было заметно заметное смещение в структуре папок, хотя это, похоже, для лучшей проверки этой статьи https://mattstauffer.co/blog /laravel-5.0-directory-structure-and-namespace
Другое решение – добавить номер порта в ключе хоста. В этом случае MAMP использует 8889 по умолчанию:
'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost:8889', 'database' => 'essays', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ),
Если вы используете версию Laravle 5.1.11 + MAC + MAMPP
вам нужно добавить «Unix_socket» в файл «yourapp» /app/config/database.php
'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), 'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock', '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 был добавлен в предыдущий конфигурационный файл mysql.