Heroku Rails部署失败,错误提示为“无法连接到服务器:连接被拒绝”。

14

本地一切正常,但在尝试推送到Heroku时出现了该错误:

正在运行: rake assets:precompile

   Connecting to database specified by DATABASE_URL                                                                                                                                                          
   rake aborted!                                                                                                                                                                                             
   could not connect to server: Connection refused                                                                                                                                                           
   Is the server running on host "127.0.0.1" and accepting                                                                                                                                                   
   TCP/IP connections on port 5432?

/tmp/build_1903c764-07ce-4d06-aa45-6e78dec68af8/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/postgresql_adapter.rb:1216:in `initialize'

   /tmp/build_1903c764-07ce-4d06-aa45-6e78dec68af8/vendor/bundle/ruby/2.0.0/gems/activerecord-3.2.13/lib/active_record/connection_adapters/postgresql_adapter.rb:1216:in `new'

我怀疑这与database.yml有关,所以这是它的内容:

development:
  adapter: mysql2
  encoding: utf8
  database: dev-db
  pool: 5
  timeout: 5000
  socket: /tmp/mysql.sock

test:
  adapter: mysql2
  encoding: utf8
  database: test-db
  pool: 5
  timeout: 5000
  socket: /tmp/mysql.sock

production:
  adapter:  postgresql
  encoding: utf8
  database: prod-db
  pool: 5
  timeout: 5000
 # socket: /tmp/mysql.sock

1
如果您在控制台中键入 heroku config,是否有任何关于 DATABASE_URL 环境变量的引用? - Richard Peck
你是初学者吗?(真诚的问题——不想让它听起来有贬低意味!!!)我认为错误与你的生产数据库分配有关。 - Richard Peck
@RichPeck,是的,有一个链接,我想那是Heroku Postgres。 - Euphe
显然,在我的Heroku配置变量中,有DATABASE_URL和HEROKU_POSTGRESQL_IVORY_URL两个变量,它们都指向相同的链接。 - Euphe
谢谢!您是否可以用您期望的数据库设置更新您的答案? - Richard Peck
3个回答

27

可能是因为您在推送到Heroku之前没有预先准备好数据库。至少,我遇到了类似的错误,并通过运行以下命令来解决它:

heroku addons:create heroku-postgresql

您可以通过运行以下命令来验证数据库已添加到您的应用程序:

heroku config

您可以在此处阅读有关此问题的所有详细信息:https://devcenter.heroku.com/articles/pre-provision-database


一样的情况。谢谢! :) - Uģis Ozols

4

请参考这篇文章。解决方法是设置

config.assets.initialize_on_precompile = false

推送成功了,但是应用现在无法启动。 - Euphe
/app/config/application.rb:12:in <top (required)>': 未定义局部变量或方法 config' (NameError) - Euphe
那是另一个问题。请批准此问题并打开一个新问题,提供application.rb文件的代码。 - Simone Carletti

1
我知道这个问题已经解决了,但是对于其他人来说,你可能需要提升数据库(如果你创建了一个新的数据库,还原到一个新的数据库或类似情况): heroku pg:promote HEROKU_POSTGRESQL_IVORY (将IVORY替换为相应的数据库名称)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接