【发布时间】:2014-02-21 00:33:33
【问题描述】:
我要做的就是在 Heroku 上部署我的 Rails 应用程序,并在 RDS 上使用一个数据库实例,这看起来应该很简单。
我在database.yml 中使用mysql2 适配器,并已推送到heroku 并根据this answer 添加了我的数据库实例。我基本上已经将它跟踪到了 T,并且我没有收到 missing gem 错误。但这就是heroku logs 透露的内容:
/app/vendor/bundle/ruby/1.9.1/bundler/gems/mysql2-e5992664a7bc/lib/mysql2/client.rb:56:in connect': Can't connect to MySQL server on 'nickcoxrails.cud3e2tma07q.us-east-1.rds.amazonaws.com' (110) (Mysql2::Error)
另外请注意,我的 RDS 实例位于 us-east,我听说这是一个问题 here。
在我的 gemfile 中,我有:
gem 'mysql2', :git => 'git://github.com/brianmario/mysql2.git'
对于我的 mysql2 gem,因为这是我可以让它在本地工作的唯一方法(因为第一个答案使用
我确实为每个this answer 添加了安全组,并为每个this answer 添加了mysql2 数据库。我还在我的 heroku 帐户中添加了 RDS 插件。我运行了rake db:create 和rake db:schema:load 和rake db:migrate 以及所有内容,但是由于我将本地数据库导出到了我的RDS 实例(我需要保持该数据完整),所以这些都没有任何新功能。而且我可以通过 Sequel Pro 连接到我的 RDS 实例,所以我知道这不是凭据问题。
这是我的第一个 Rails 应用程序部署,所以不要害怕回答你的问题,给我相当于“它是否已插入?” heroku/Rails/RDS/等的技术支持问题。
【问题讨论】:
-
您可能想根据官方文档尝试使用RDS addon。
-
感谢您的建议。请注意,在我的问题中,我提到了该附加组件。当我
heroku conifig:get DATABASE_URL时,它会呼应我的 RDS 数据库,所以我认为设置正确。这是一个合理的假设吗? -
抱歉,在阅读问题时错过了这一点。如果
DATABASE_URL设置了您的 RDS 实例,则表明它已正确设置。您在安装插件后是否运行了rds-authorize-db-security-group-ingress?错误消息表明这可能是问题所在。 -
感谢您的坚持。我没有运行它(因为我无法理解 RDS CLI 工具的文档),但我确实通过 RDS ui 授权了我的 ip,看起来它做了同样的事情......? Here 的截图。做同样的事情吗?
-
这取决于您的安全组是如何配置的。最好从帐户 098166147350(归 Heroku 所有)添加默认安全组
标签: mysql ruby-on-rails heroku amazon-rds