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
это легко исправить. Ваша база данных mysql потеряла соединение с сервером. Если вы используете локальный сервер запустить в терминале:
mysqld
это позволит повторно подключить базу данных. Затем (если вы используете homebrew) запустите:
brew services start mysql
это автоматически подключит вашу базу данных при входе в систему.
используйте localhost вместо 127.0.0.1 (в вашем .env file), затем запустите команду "php artisan config: cache"
в моем случае эта ошибка появилась из синего. Глядя на эту загадочную ошибку, я понял, что я пытался запустить команду за пределами виртуальной машины...
другое решение для всех, у кого есть проблема. У меня были все настройки правильно, но по какой-то причине мои изменения не были обновлены. 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>