SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo失败:名称或服务未知

hjv*_*chg 24 mysql laravel openshift laravel-5

我从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
Run Code Online (Sandbox Code Playgroud)

我的错误: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
Run Code Online (Sandbox Code Playgroud)

错误信息

Taz*_*Taz 38

错误消息的第一行描述错误类型:"PDOException".显示下一行PDO::errorInfo,即:

  1. SQLSTATE错误代码(ANSI SQL标准中定义的五个字符的字母数字标识符).
  2. 特定于驱动程序的错误代码
  3. 特定于驱动程序的错误消息
  • "HY000"是一般服务器错误(请参阅MySQL文档中的服务器错误代码和消息).
  • "2002"是MySQL客户端错误代码,意思是"无法通过套接字连接到本地MySQL服务器"(请参阅​​(MySQL文档中的客户端错误代码和消息).
  • 驱动程序特定的错误代码和消息("php_network_getaddresses:getaddrinfo失败:名称或服务未知")告诉您PDO无法解析主机名.

您附加的堆栈跟踪(第3行)显示您未在配置文件中指定数据库连接参数.当你在本地测试时出现错误,对吗?您需要/.env使用实际的数据库连接参数进行更新.


Md *_*ruk 11

我遇到了同样的问题,通过将DB_HOST值替换为“127.0.0.1”并为DB_SOCKET添加附加行来解决,对于我的情况是/var/run/mysqld/mysqld.sock

#DB_HOST=mysql
DB_HOST=127.0.0.1
DB_SOCKET=<mysql exicutable path>
Run Code Online (Sandbox Code Playgroud)


mar*_*e96 10

如果有人在使用 时遇到此问题Docker,请确保您使用的是您的 SQL 版本。

就我而言:MYSQL_VERSION=latest更改为MYSQL_VERSION=5.7.

然后,您需要使用docker system prune -a( docs )删除未使用的 Docker 映像。

此外,在您.env需要更改DB_HOST=mysql. 并运行php artisan config:clear

我认为它会帮助某人。


Hyd*_* B. 8

我正在将 Laravel 与 Docker 一起使用。我改变的价值解决了这个问题DB_HOST,从localhostmysql

DB_HOST=mysql
Run Code Online (Sandbox Code Playgroud)

  • 我的“DB_HOST”是“mysql”,但不工作! (2认同)

Ben*_*ett 6

我在让 Laravel 应用程序连接到 Laravel Sail MySQL 8.0 容器时遇到问题。我通过将DB_HOSTfrom更改mysql为 to解决了这个问题127.0.0.1(与 Sail 文档所述相反)。


gau*_*ini 5

检查您DB_HOST.env文件

DB_HOST=http://localhost/ --> DB_HOST=localhost
Run Code Online (Sandbox Code Playgroud)

php artisan config:clear 它将帮助您,清除缓存的配置


小智 5

如果您所在的网络具有多个 docker 容器,请确保它们全部启动并运行!我的一个容器坏了,如果你知道去哪里检查的话,这很明显。