如何从 Yii2 连接到 RDS 数据库?

How to connect to an RDS database from Yii2?

我已经在 AWS Elastic Beanstalk 上部署了一个基于 Yii2 的应用程序,我还在 Elastic Beanstalk 上创建了一个带有数据库(它已经有表)的 RDS 实例。但是我收到了这个错误:"SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known"

所有文件都正确上传到AWS实例。

文件 /common/config/main-local.php 有:

'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=',
            'dsn' => 'mysql:host=RDS_HOSTNAME:RDS_PORT;dbname=RDS_DB_NAME',
            'username' => 'RDS_USERNAME',
            'password' => 'RDS_PASSWORD',
            'charset' => 'utf8',
        ],

有什么问题吗?谢谢

你有 2 次你的 'dsn' 行,也许第一个幸存下来,所以将你的配置更改为此应该有效:

'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=RDS_HOSTNAME:RDS_PORT;dbname=RDS_DB_NAME',
            'username' => 'RDS_USERNAME',
            'password' => 'RDS_PASSWORD',
            'charset' => 'utf8',
        ],

(此外,我希望您知道必须更改 RDS_* 参数 :D)

我猜您想通过环境变量传递数据库信息。您可能想尝试修改如下代码。

'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',
    ],

您可以参考http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html#rds-external-ec2classic中的配置环境属性部分来配置您的环境变量。希望这有效。