如何从 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中的配置环境属性部分来配置您的环境变量。希望这有效。
我已经在 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中的配置环境属性部分来配置您的环境变量。希望这有效。