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] [重复]

SQLSTATE[HY000] [2002] 权限被拒绝 Laravel PDO 驱动程序(凭证通过工匠迁移工作)

SQLSTATE[HY000] [2002] 操作超时