SQLSTATE [HY000] [2002] php_network_getaddresses: getaddrinfo не удалось: имя или услуга неизвестны

Я скачиваю с https://github.com/luciddreamz/laravel Laravel для openshift затем загрузите через мой репозиторий через github. Этот код для подключения к базе данных не работает. Проблема в том, что переменная загрузки из файла .env находится в корне проекта

для решения этой проблемы изменить .env

# local environment only
#   for production, see .openshift/.env

APP_ENV=APPLICATION_ENV
APP_DEBUG=true
APP_URL=OPENSHIFT_APP_DNS
APP_KEY=OPENSHIFT_SECRET_TOKEN

DB_DRIVER=mysql
DB_HOST=OPENSHIFT_MYSQL_DB_HOST
DB_PORT=OPENSHIFT_MYSQL_DB_PORT
DB_DATABASE=OPENSHIFT_APP_NAME
DB_USERNAME=OPENSHIFT_MYSQL_DB_USERNAME 
DB_PASSWORD=OPENSHIFT_MYSQL_DB_PASSWORD

CACHE_DRIVER=apc
SESSION_DRIVER=file

моя ошибка: SQLSTATE [HY000] [2002] php_network_getaddresses: сбой getaddrinfo: имя или служба не известны

createConnection('mysql:host=OPENSHIFT_MYSQL_DB_HOST;port=OPENSHIFT_MYSQL_DB_PORT;dbname=OPENSHIFT_APP_NAME', 
array('driver' => 'mysql', 
      'host' => 'OPENSHIFT_MYSQL_DB_HOST', 
      'port' => 'OPENSHIFT_MYSQL_DB_PORT', 
      'database' => 'OPENSHIFT_APP_NAME', 
      'username' => 'OPENSHIFT_MYSQL_DB_USERNAME', 
      'password' => 'OPENSHIFT_MYSQL_DB_PASSWORD', 
      'charset' => 'utf8',  
      'collation' => 'utf8_unicode_ci', 
      'prefix' => '', 
      'strict' => false, 
      'name' => 'mysql'), 
array('0', '2', '0', false, '0')) in MySqlConnector.php line 20

error message

Ответ 1

В первой строке сообщения об ошибке описывается тип ошибки: "PDOException". Следующая строка отображает PDO::errorInfo, i.e:

  • Код ошибки SQLSTATE (буквенно-цифровой идентификатор из пяти символов, определенный в стандарте ANSI SQL).
  • Код ошибки, специфичный для драйвера.
  • Сообщение об ошибке для конкретного драйвера.
  • "HY000" - это общая ошибка сервера (см. Коды ошибок сервера и сообщения в документах MySQL).
  • "2002" - это код ошибки клиента MySQL, означающий "Невозможно подключиться к локальному серверу MySQL через сокет" (см. (Коды ошибок клиента и сообщения в документах MySQL).
  • Код ошибки и сообщение с конкретным драйвером ( "php_network_getaddresses: getaddrinfo failed: имя или служба неизвестны" ) сообщает вам, что PDO не может разрешить имя хоста.

Трассировка стека, которую вы подключили, строка 3, показывает, что вы не указали параметры подключения к базе данных в файле конфигурации. Ошибка появляется, когда вы проверяете локальный, правильно? Вам необходимо обновить /.env с помощью фактических параметров подключения к базе данных.

Ответ 2

Проверьте свой DB_HOST в своем файле .env

DB_HOST=http://localhost/ --> DB_HOST=localhost

php artisan config:clear это поможет вам, очистить кешированный конфиг

Ответ 3

Похоже, вы не добавили базу данных MySQL в свое приложение, или вы добавили ее после установки laravel. В этом случае вам необходимо остановить и запустить (не перезапускать) приложение, чтобы оно подхватило переменные среды. (остановка приложения rhc, запуск приложения rhc). Если вы еще не добавили базу данных, вам нужно будет добавить один из картриджей mysql, а затем остановить и запустить приложение, используя ранее показанные команды.

Ответ 4

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

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

Я использую Windows 10, и в этом случае docker gui предоставляет нам некоторые возможности.

Просто щелкните правой кнопкой мыши значок докеры в панели лотка и выберите пункт "Настройки".

Параметры докеров

Затем в окне Docker выберите раздел "Сеть" и измените параметр DNS с "Автоматический" на "Исправлено" и нажмите "Применить". После этого Docker перезапустится. Я поместил DNS-сервер Google (8.8.8.8), и он отлично работал у меня.

сетевой раздел докеры с конфигурацией dns

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

Ответ 5

Я использую Laravel с Docker. Я решил эту проблему, изменив значение DB_HOST с localhost на mysql.

DB_HOST=mysql

Ответ 6

Мы используем Symfony с доктриной, и мы находимся в процессе автоматизации развертывания. Я получил эту ошибку, когда просто не предоставил правильные кредиты БД в файле parameters.yml (я запускал doctrine: migrations: migrate)

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

Ответ 7

Точно так же, как и для других пользователей, внезапно испытывающих это на другой (ранее) работающей установке Laravel:

Моя среда Laravel находится на Ubuntu VirtualBox, размещенном на ноутбуке с Win-10.

Я использовал свой телефон для доступа в Интернет через USB и внезапно начал испытывать эту проблему. Я переключился на использование телефона в качестве беспроводной точки доступа, и проблема исчезла. Это проблема сервера имен/сети и не относится к Laravel или MySQL.

Ответ 8

В моем случае все было настроено правильно, но моей инфраструктуре Docker требовалось больше оперативной памяти. Я использую Docker для Mac, где объем оперативной памяти по умолчанию составлял около 1 ГБ, а поскольку MySQL использует около 1,5 ГБ ОЗУ (и, вероятно, был сбой???), изменение уровня использования ОЗУ Docker до 3-4 ГБ решило проблему.

Ответ 9

Если кто-то столкнулся с этой проблемой при использовании Docker, убедитесь, что вы используете свою версию SQL.

В моем случае: MYSQL_VERSION=latest меняется на MYSQL_VERSION=5.7.

Затем вам нужно перезапустить ваши изображения Docker с помощью docker system prune -a.

Также в вашем .env вам нужно изменить DB_HOST=mysql. И запустите php artisan config:clear.

Я думаю, что это поможет кому-то.

Ответ 10

Если вы используете Shopware с докером, вам нужно сначала запустить ./psh.phar ssh, тогда любая команда bin/console будет работать