Настройка Laravel на Mac php artisan Ошибка миграции: нет такого файла или каталога
- Вытащил отлично работающий проект laravel из git в Mac с помощью MAMP. Проект отлично работал на Linux-машине.
- установка композитора
-
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 безрезультатно. Просьба помочь..
Edit:
Я добавил эти три строки в свой 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
Ответы
Ответ 1
Если вы используете 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' => '',
),
Ответ 2
Не предполагайте, что ваш 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.
Ответ 3
Была та же проблема, но теперь она работает для меня.
Если у кого-то все еще есть проблемы, попробуйте следующее:
- Убедитесь, что ваш
bootstrap/start.php
содержит ваше фактическое имя хоста, а не имя вашего виртуального хоста. Введите hostname
в терминал, чтобы получить имя хоста. Поскольку это массив, я считаю, что вы можете ввести как свое имя хоста, так и имя (имена) вашего виртуального хоста (ов).
- Заменить "localhost" на "127.0.0.1".
Ответ 4
Если вы используете XAMPP, решение:
'mysql' => array(
'driver' => 'mysql',
'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
'host' => 'localhost'
)
Ответ 5
Это работает для меня в Laravel 5.0, измените DB_HOST = 127.0.0.1: 33060 в .env файле.
Другие ответы не работают...
Ответ 6
Для Laravel 5.0+ измените localhost
на 127.0.0.1
в вашем .ENV файле, а также перед тем, как поиграть с Unix-сокетами и т.д. - это сработало для меня.
Noobs beware: для тех, кто использует Laravel 5 и использует более старые учебные материалы, имейте в виду, что в предыдущих версиях было заметно заметное изменение структуры папок, хотя это, по-видимому, для лучшей проверки этой статьи https://mattstauffer.co/blog/laravel-5.0-directory-structure-and-namespace
Ответ 7
Другим решением является добавление номера порта в ключ хоста. В этом случае MAMP использует 8889 по умолчанию:
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost:8889',
'database' => 'essays',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
Ответ 8
Если вы используете версию 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.