Sqlstate[HY000] [2002] соединение отказано в пределах усадьбы Laravel

использование Mac OS X и Homestead 2.2.1 с Laravel 5.2.

в терминале (внутри усадьбы в моей папке проекта) я могу сделать php artisan, чтобы увидеть все доступные команды. Когда я пытаюсь запустить php artisan migrate, я получаю ошибку подключения:
SQLSTATE[HY000] [2002] Connection refused


Я установил проект Laravel с этими .env настройки

DB_HOST=127.0.0.1
DB_DATABASE=tcv
DB_USERNAME=homestead
DB_PASSWORD=secret

Я также пробовал localhost в для DB_HOST и root для DB_USERNAME и DB_PASSWORD. И все возможные варианты этого вместе взятые!


в Sequel Pro (приложение для управления БД) я могу подключиться к этим настройкам

Host       127.0.0.1
Username   homestead
Password   secret
Database   tcv
Port       33060

но эта база данных, очевидно, пуста, потому что я не могу перейти на нее с терминала ...

насколько я могу понять, это проблема конфигурации, так как я могу подключиться к нему с Sequel Pro. Но, честно говоря, я понятия не имею, что не так.

спасибо помощь !!

редактировать
Почему-то я получаю то же самое SQLSTATE[HY000] [2002] Connection refused ошибка при перемещении моего проекта в MAMP и запуске php artisan migrate.
Теперь я совершенно потерян ...

13 ответов


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

на стандартном проекте L5 раздел MySql config/database.php выглядит так:

    '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,
        'engine'    => null,
    ],

уведомления нет порта сет!

хотя в моем .env файл, который я установил DB_PORT=33060. Но это! .. --6--> никогда не был в config/database.php.
Так что не будьте тупицей, как я, и забудьте проверить .


исправить
Просто добавьте 'port' => env('DB_PORT', 3306), к вашей конфигурации / базе данных.php и установите это значение .env как это DB_PORT=33060

Я просто столкнулся с этим и нашел, что изменение это .файл env от 127.0.0.1 до localhost исправил его.

DB_HOST=localhost


У меня была эта проблема. При подключении к Sequel Pro мне нужно использовать 33060 в качестве порта, но в .файл env должен быть 3306. Я 33060 в .файл env. Изменил его на 3306, и он работал.


Если вы используете MAMP на mac OS, добавьте следующую строку в файл конфигурации базы данных mysql

'unix_socket' => env('DB_SOCKET', ''),

и на вашем .файл env добавить

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

У меня была такая же проблема, попробуйте это работает

DB_HOST=localhost

это легко исправить. Ваша база данных mysql потеряла соединение с сервером. Если вы используете локальный сервер запустить в терминале:

mysqld

это позволит повторно подключить базу данных. Затем (если вы используете homebrew) запустите:

brew services start mysql

это автоматически подключит вашу базу данных при входе в систему.


используйте localhost вместо 127.0.0.1 (в вашем .env file), затем запустите команду "php artisan config: cache"


в моем случае эта ошибка появилась из синего. Глядя на эту загадочную ошибку, я понял, что я пытался запустить команду за пределами виртуальной машины...


возможно, что ваш "mysql" не запущен или не находится в порту "3306"


другое решение для всех, у кого есть проблема. У меня были все настройки правильно, но по какой-то причине мои изменения не были обновлены. Laravel фактически кэширует файл конфигурации (который я нахожу совершенно глупым).

вот мое решение после обновления конфигураций:

php artisan config:clear


если вы используете Homestead тогда вы должны запустить его с портом mysql по умолчанию. Поэтому вместо использования DB_PORT=33060, вы должны использовать DB_PORT=3306 в вашей .файл env. Кроме того, не забудьте запустить свой php artisan migrate команды в вашей установке усадьбы, и все должно быть в порядке.

надеюсь, что это поможет.


единственное, что решило это для меня, это поместить детали соединения в конфигурация / база данных.в PHP вместо .env. Надеюсь, это поможет


внутри конфигурации/базы данных.php вместо этого оставляет все конфигурации включенными .env. Вся функция env () будет заменена необработанным текстом. Вот так:

<pre>
    'mysql' => [
        'driver' => 'mysql',
        'host' => '127.0.0.1',
        'port' => '3306',
        'database' => 'database_name',
        'username' => 'username',
        'password' => 'password',
        'unix_socket' => '',
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],
</pre>