Миграция с ошибкой на Маке

Базы данных Ошибки

Автор: QiwiFuck - March 13, 2016 3:20 pm

Попытка загрузить миграции через артисан приводит к ошибке (под MAMP)

При переносе приложения из-под Windows на Mac, оказалось невозможным внести в базу таблицы через миграции.

Запуск php artisan migrate привел к ошибке PDO:

[PDOException]
SQLSTATE[HY000] [2002] Connection refused

Такая ошибка, как оказалось, возникает довольно часто. Потому напишу, что нужно делать.

Во-первых, сразу посмотрите серверные логи :)

Последней строкой будет запись, относящаяся к возникшей ошибке:

Version: '5.5.42'  socket: '/Applications/MAMP/tmp/mysql/mysql.sock'  port: 0  Source distribution

То есть видим, что мускул отработал, но результата в терминале мы не получили.

Происходит это из-за того, что не найден файл mysql.sock.

Давайте исправим.

Открываем файл config/database.php, и в блоке, начинающемся в строке 55 (в неизмененной конфигурации) дописываем еще одну строку с указанием пути к файлу mysql.sock, который берем из лога (см. выше). Скажем, в конец блока, т.е. в строку 65 ставим:

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',

Теперь идем в терминал, и загружаем свою миграцию.

Для того, чтобы удобнее было управлять настройками подключения к базе данных (на рабочем сервере эта строка может не понадобиться, и ее проще будет исключить в файле .env, или, по крайней мере, она сразу бросится вам в глаза, и вы вспомните, что нужно проверить, если не работает соединение с базой данных), вместо приведенной выше строки в файле config/database.php можно указать:

'unix_socket' => env('DB_SOCKET', '/tmp/mysql.sock'),

И тогда в самом файле .env в разделе подключения к базе добавить такую строку:

DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

Удачных разработок!
Заходите на LaraNotes.ru, и оставляйте свои записки по работе с Laravel.

.