rake db:migrate忽略生产的主机参数

时间:2015-07-09 16:10:46

标签: mysql ruby-on-rails amazon-web-services

当我尝试运行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

中指定的主机名

1 个答案:

答案 0 :(得分:0)

事实证明你必须将production括在引号中。如果我运行rake db:migrate RAILS_ENV="production"它就有效......