Настройка Laravel на Mac php artisan migrate error: Нет такого файла или каталога

  1. Вытащил отлично работающий проект laravel из git в mac, работающий с MAMP. Проект отлично работал на Linux-машине.
  2. установка композитора
  3. 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

Solutions Collecting From Web of "Настройка Laravel на Mac php artisan migrate error: Нет такого файла или каталога"

Если вы используете 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 будет отличаться от одного к другому, попробуйте его найти.

Прежде всего, получите свое местоположение 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 в терминал, чтобы получить имя хоста. Поскольку это массив, я считаю, что вы можете ввести как свое имя хоста, так и имя (имена) вашего виртуального хоста (ов).
  • Замените «localhost» на «127.0.0.1».

Если вы используете 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.