SQLSTATE [HY000] [2002] Соединение отказано в поселке Ларавель
Использование Mac OS X и Homestead 2.2.1 с Laravel 5.2.
В терминале (внутри homestead в моей папке проекта) я могу сделать php artisan, чтобы увидеть все доступные команды. Когда я пытаюсь запустить миграцию php artisan, я получаю ошибку подключения:
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 (приложение управления db) Я МОЖЕТ подключиться к этим настройкам
Host 127.0.0.1
Username homestead
Password secret
Database tcv
Port 33060
Но эта база данных, очевидно, пуста, потому что я не могу перейти к ней из терминала...
Насколько я могу разобраться, это проблема конфигурации, так как я могу подключиться к ней с помощью Sequel Pro. Но я честно не ошибаюсь, что неправильно настроено.
Спасибо за помощь!
ИЗМЕНИТЬ
По какой-то причине я получаю ту же ошибку SQLSTATE[HY000] [2002] Connection refused
при перемещении моего проекта в MAMP и запуск миграции php-artisan.
Теперь я полностью потерян...
Ответы
Ответ 1
Проблема
В 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
. Но это value (3306)
никогда не читалось в config/database.php
.
Так что не будьте тупым, как я, и забудьте проверить файл database.php
.
FIX
Просто добавьте 'port' => env('DB_PORT', 3306),
в ваш config/database.php и установите это значение в .env как это DB_PORT=33060
Ответ 2
Я просто наткнулся на это и обнаружил, что изменение этого в файле .env с 127.0.0.1
на localhost
исправило это.
DB_HOST=localhost
Ответ 3
Если вы используете MAMP в Mac OS, добавьте следующую строку в файл конфигурации базы данных mysql.
'unix_socket' => env('DB_SOCKET', ''),
и к вашему.env файлу добавьте
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
Ответ 4
Используйте localhost
вместо 127.0.0.1
(в вашем файле .env), затем выполните команду:
php artisan config:cache
Ответ 5
Другое решение для всех, у кого есть проблема. У меня были все настройки правильные, но почему-то мои изменения не были обновлены. Laravel фактически кэширует конфигурационный файл (который я считаю абсолютно глупым).
Вот мое решение после обновления конфигураций:
php artisan config:clear
Ответ 6
У меня была эта проблема. При соединении с Sequel Pro мне нужно использовать 33060
в качестве порта, но в файле .env это должно быть 3306
. У меня было 33060
в файле .env. Поменял на 3306
и все заработало.
Ответ 7
Это простое исправление. Ваша база данных mysql потеряла связь с сервером. Если вы используете локальный сервер, запустите его в своем терминале:
mysqld
Это соединит вашу базу данных. Затем (если вы используете homebrew) запустите:
brew services start mysql
Это автоматически подключит вашу базу данных при входе в систему.
Ответ 8
У меня была такая же проблема, попробуйте это работает
DB_HOST=localhost
Ответ 9
Возможно, ваш mysql
не запущен или не 3306
к порту 3306
Ответ 10
В моем случае эта ошибка появилась из синего. Увидев эту загадочную ошибку, я понял, что пытался запустить команду вне vm...
Ответ 11
После того, как вы поместили всю конфигурацию в файл .env, если вы уже запустили php artisan serve
, перезапустите его.
Ответ 12
У меня была та же проблема, и я исправил ее, просто преобразовав константу DB_HOST в .env File FROM 127.0.0.1
в localhost DB_HOST = localhost
.
Не нужно ничего менять на config/database.php
![enter image description here]()
Ответ 13
Я, я использую vagrant, но я выполняю php artisan вне коробки, так что в основном у него нет разрешения
Ответ 14
У меня та же проблема, но я должен переключаться между localhost и 127.0.0.1.
При просмотре сайта в браузере и мне нужен доступ к базе данных, которую я использую.
localhost
Но когда мне нужно сделать какие-либо миграции или сеянцы в терминале, мне нужно использовать.
127.0.0.1
В настоящее время я использую бродячий, виртуальный ящик и усадьбу.
Было бы хорошо, если бы вам не приходилось постоянно переключаться между ними.
Ответ 15
Для меня, заключив в кавычки учетные данные сделали свое дело
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE='zzz'
DB_USERNAME='yyy'
DB_PASSWORD='XXX'
Ответ 16
Если вы используете Homestead
, тогда вы должны запускать его со стандартным портом mysql. Поэтому вместо использования DB_PORT=33060
вы должны использовать DB_PORT=3306
в вашем .ENV файле. Кроме того, не забудьте запустить ваши команды php artisan migrate
в вашей усадебной установке, и все должно быть в порядке.
Надеюсь, что это поможет.
Ответ 17
Единственное, что решило это для меня, - это поместить данные соединения в config/database.php вместо файла .env. Надеюсь это поможет
Ответ 18
У меня была похожая проблема, и никакие предложения не помогли мне. Это то, что исправило мою проблему, состояло в том, чтобы установить имя приложения и имя хоста базы данных с одинаковым значением. В моем случае 127.0.0.1 работает правильно.
APP_URL=127.0.0.1
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=zzz
DB_USERNAME=yyy
DB_PASSWORD=XXX
Ответ 19
Хорошо, обновление, кажется, хост не проблема, а на самом деле порт.
Так что на самом деле это порт 3306 для тестирования браузера, но еще и для терминала и Sequel Pro 33060. Может ли это быть связано с добавлением его в Homestead.yaml и установкой здесь?
При чтении установки относительно Laravel это говорит:
MySQL: 33060 → Вперед к 3306
Ответ 20
Я мог бы быть, потому что вы, возможно, не перезапускали ремесленника PHP с тех пор
Итак, после внесения изменений в БД и настройки: clear Tinker работает нормально
Но чтобы браузер отражал новое соединение с БД, вам нужно перезапустить
подача ремесленника php
Ответ 21
- прекратить sqld из диспетчера задач
- остановите MySQL из панели управления xampp и перезапустите его
если все равно выкинет ту же проблему, из корневой папки запустите
php artisan cache:clear
php artisan config:cache
php artisan serve
-
если у вас все еще есть проблема, проверьте, используете ли вы несколько копий сервера SQL, например, через приложение Ubuntu, если это так, остановите сервер MySQL в Ubuntu.
sudo service MySQL stop
Ответ 22
Я столкнулся
SQLSTATE [HY000] [2002] Соединение отклонено (SQL: выбрать * из проектов)
Причина была в том, что я не запустил сервер MySQL.
Это может помочь проверить, что MySQL работает как первый шаг в устранении ошибки.
Ответ 23
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=8080
DB_DATABASE=flap_safety
DB_USERNAME=root
DB_PASSWORD=mysql
Выше дано мое .env
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', 'mysql'),
// 'port' => env('DB_PORT', '8080'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', 'mysql'),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
выше приведен мой файл database.php. я только что закомментировал порт из database.php, и он работал для меня.
Ответ 24
Я обнаружил, что мой сервер просто необходимо перезапустить, и "bam" это было исправлено.
Ответ 25
В моем случае у меня была та же ошибка при использовании docker, и хитрость была в установке в файле .env
этого DB_HOST=db
, где db - это имя контейнера, на котором работает сервер базы данных.