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

  1. прекратить sqld из диспетчера задач
  2. остановите MySQL из панели управления xampp и перезапустите его

если все равно выкинет ту же проблему, из корневой папки запустите

php artisan cache:clear
php artisan config:cache
php artisan serve
  1. если у вас все еще есть проблема, проверьте, используете ли вы несколько копий сервера 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 - это имя контейнера, на котором работает сервер базы данных.