当我尝试运行rake db:migrate RAILS_ENV=production
时,我收到错误,因为它尝试连接到localhost(错误:Mysql2::Error: Access denied for user 'xxxx'@'10.0.0.7' (using password: NO)
)
这是我的database.yml文件:
production:
adapter: mysql2
encoding: utf8
pool: 5
host: long-amazon-aws-rds-instance-endpoint
database: xxxx_production
username: xxxxx
password: <%= ENV['XXXX_DATABASE_PASSWORD'] %>
当我运行echo $XXXX_DATABASE_PASSWORD
时,它会给我正确的密码,当我运行mysql -uxxxxx -hlong-amazon-aws-rds-instance-endpoint -p
然后输入我的密码时,我可以连接到RDS没问题。我还为passenger
设置了环境变量,并且应用程序连接正常,因此RDS实例绝对可以访问。
为什么rake尝试使用本地ip而不是database.yml
答案 0 :(得分:0)
事实证明你必须将production
括在引号中。如果我运行rake db:migrate RAILS_ENV="production"
它就有效......