2015-05-12 2 views
10

i скачать с https://github.com/luciddreamz/laravel laravel for openshift затем загрузить через мой репозиторий через github. этот код для подключения к базе данных не работает. проблема заключается в том, что переменная нагрузка от .env файла, найдите в корневом каталоге проектаSQLSTATE [HY000] [2002] php_network_getaddresses: getaddrinfo не удалось: имя или услуга неизвестна

для решения этих изменений проблемы .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

У меня такое ощущение, что вы не читали прилагаемый файл readme о локальном/удаленном развитии. Проверьте: https://github.com/luciddreamz/laravel#local-vs-remote-development – luciddreamz

+1

Я использую ваш код, но это не работает, тогда у меня есть файл .env .env – hjvcghcghchg

ответ

18

Первая строка сообщения об ошибке описывает тип ошибки: «PDOException». Следующая строка отображает PDO::errorInfo, то есть:

  1. код ошибки SQLSTATE (в пять символов буквенно-цифровой идентификатор, определенный в стандарте ANSI SQL).
  2. Код ошибки, специфичный для водителя.
  3. Сообщение об ошибке для конкретного драйвера.
  • "HY000" общая ошибка сервера (см Server Error Codes and Messages в MySQL документации).
  • «2002» является MySQL код ошибки клиента означает «Не удается подключиться к локальному серверу MySQL через гнездо» (см (Client Error Codes and Messages в MySQL документации)
  • Драйвер Код ошибки и сообщение ("php_network_getaddresses:. Getaddrinfo не удалось: Имя или служба не известны ») сообщают вам, что PDO не может разрешить имя хоста.

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

+0

, какой параметр является ложным? к фактическому параметру? – hjvcghcghchg

+0

@javadhajian Те, что в '.env'. Я предполагаю, что в локальных константах 'APP_ *' и 'DB_ *', которые ссылаются на 'OPENSHIFT_ *' env vars, следует заменить ваши параметры db. – bostaf

+0

'APP_ *' 'DB_ *' не является константой, но это переменная, которая имеет параметр – hjvcghcghchg

3

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

+0

i экзамен Это решение не работает для меня и показывает мне ту же ошибку – hjvcghcghchg

+0

Вы спасли меня много времени, человек! – DevMoutarde

0

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

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

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

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

Docker's options

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

docker's network section with dns config

Надеется, что это помогает.

Смежные вопросы