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
будет работать