使用Ruby无法连接到PostgreSQL数据库在Heroku - 无法解析主机名(Can'

2019-07-30 06:57发布

我使用的红宝石(未Rails的)和连接PostgreSQL数据库。 我一直试图让建立在Heroku上,但我在启动应用程序的问题。 在本地运行应用程序工作正常。

我的地方.ENV是这样的:

postgres://DATABASE_URL=localhost

和红宝石连接到连接到数据库的样子:

@@db = PGconn.open(:hostaddr => ENV['DATABASE_URL'], :dbname => '(dbname)', :password => '(password)')

当我推到Heroku上的应用程序崩溃,在该行,并写入该错误日志:

could not translate host name "postgres://(my heroku db address)" to address: Name or service not known (PG::Error)

该数据库的地址在那里的匹配DATABASE_URL在我的heroku:config 。 我使用一个共享的数据库。

我尝试使用:host => ENV['DATABASE_URL']相对于:hostaddr ),但有同样的结果。 我猜有一些简单的我失踪,但我还没有得到任何好的想法。

Answer 1:

您需要解析出的特定部分DATABASE_URL 。 请参阅https://devcenter.heroku.com/articles/rack#database_access



Answer 2:

Heroku的Devcenter似乎并不包括这个了,所以在这里是如何做手工分割:

  db_parts = ENV['DATABASE_URL'].split(/\/|:|@/)
  username = db_parts[3]
  password = db_parts[4]
  host = db_parts[5]
  db = db_parts[7]
  conn = PGconn.open(:host =>  host, :dbname => db, :user=> username, :password=> password)

礼貌哭 。



文章来源: Can't connect to PostgreSQL database on Heroku using Ruby - could not translate host name