les*_*gar 7 php mysql dns amazon-web-services laravel
在我们的Laravel 5.2应用程序中,我们使用多个读取服务器(以及多个数据库连接)在AWS上运行数据库设置.
晚上,我们将所有网络服务器的DNS解析器更改为Google DNS(8.8.8.8和8.8.4.4).然后,服务器开始吐出这些:
PDOException:异常'PDOException',消息' SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo failed:名称或服务未知 '在/home/forge/studydrive.net/releases/20170320162143/vendor/laravel/framework/src/Illuminate /Database/Connectors/Connector.php:55
代码Connector.php:55只是PDO构造函数:
public function createConnection($dsn, array $config, array $options)
{
$username = Arr::get($config, 'username');
$password = Arr::get($config, 'password');
try {
$pdo = new PDO($dsn, $username, $password, $options); // <== THIS ONE
} catch (Exception $e) {
$pdo = $this->tryAgainIfCausedByLostConnection(
$e, $dsn, $username, $password, $options
);
}
return $pdo;
}
Run Code Online (Sandbox Code Playgroud)
AWS 的.env配置(更改了敏感部分):
DB_HOST=myapp-cluster.cluster-123abc.eu-west-2.rds.amazonaws.com
DB_HOST_WRITE=myapp-cluster.cluster-123abc.eu-west-2.rds.amazonaws.com
DB_HOST_READ=myapp-cluster.cluster-ro-123abc.eu-west-2.rds.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
所以,似乎PHP的PDO突然无法解析DB_HOST名称.
请注意,我们不能使用IP DB_HOST,因为主机名(在AWS端)映射到3个不同的数据库READ服务器.
此外,在我们更换旋转变压器之前,一切正常.
任何人都知道可能导致PDO错误的原因,或者如何解决它?
小智 5
这是libc中的一个错误,根据:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1674733
php_network_getaddresses:getaddrinfo failed:名称或服务未知ubuntu
| 归档时间: |
|
| 查看次数: |
5637 次 |
| 最近记录: |