PDO 异常 SQLSTATE[HY000] [2002] Yii2 上的 Elastic Beanstalk 和 RDS 连接超时
Posted
技术标签:
【中文标题】PDO 异常 SQLSTATE[HY000] [2002] Yii2 上的 Elastic Beanstalk 和 RDS 连接超时【英文标题】:PDO Exception SQLSTATE[HY000] [2002] Connection timed out with Elastic Beanstalk and RDS on Yii2 【发布时间】:2017-11-09 16:12:44 【问题描述】:我已经在 AWS Elastic Beanstalk 上部署了一个基于 Yii2 的应用程序,我还在 Elastic Beanstalk 上创建了带有数据库(它已经有表)的 RDS 实例。所有文件均已正确上传到 AWS 实例。
文件 /common/config/main-local.php 有:
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=myConnection_string:3306;myDB',
'username' => 'myUsername',
'password' => 'myPassword',
'charset' => 'utf8',
],
怎么了?谢谢。
【问题讨论】:
【参考方案1】:我通过在 EC2>Network&Security>Security Groups>Edit inbound rules 上更改为“所有流量”解决了这个问题。
我还在 AWS 上设置了变量并将脚本更改为:
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=',
'dsn' => 'mysql:host='.$_SERVER['RDS_HOSTNAME'].':'.$_SERVER['RDS_PORT'].';dbname='.$_SERVER['RDS_DB_NAME'],
'username' => $_SERVER['RDS_USERNAME'],
'password' => $_SERVER['RDS_PASSWORD'],
'charset' => 'utf8',
],
这个答案对我帮助很大:How to connect to an RDS database from Yii2?
【讨论】:
允许“所有流量”进入数据库是非常糟糕的做法。请不要这样做。以上是关于PDO 异常 SQLSTATE[HY000] [2002] Yii2 上的 Elastic Beanstalk 和 RDS 连接超时的主要内容,如果未能解决你的问题,请参考以下文章
PDO 错误:SQLSTATE [HY000]:一般错误:2031
PDO 错误:“SQLSTATE[HY000]: General error” 更新数据库时
SQLSTATE[HY000] [2002] 资源暂时不可用 - mysql - innodb 和 pdo
使用 PDO 连接到远程 MYSQL 服务器,导致相同的错误 SQLSTATE[HY000] [2002] [重复]