簡體   English   中英

無法使用Ruby連接到Heroku上的PostgreSQL數據庫 - 無法翻譯主機名

[英]Can't connect to PostgreSQL database on Heroku using Ruby - could not translate host name

我正在使用Ruby(而不是Rails)並連接PostgreSQL數據庫。 我一直試圖在Heroku上設置,但是我在啟動應用程序時遇到了問題。 在本地運行應用程序正常。

我的本地.env看起來像:

postgres://DATABASE_URL=localhost

並且連接到數據庫的Ruby連接如下所示:

@@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)

那里的數據庫地址與我的heroku:config中的DATABASE_URL相匹配。 我正在使用共享數據庫。

我嘗試使用:host => ENV['DATABASE_URL'] (而不是:hostaddr ),但結果相同。 我猜我有一些簡單的東西,但是我沒有任何好的想法。

您需要解析DATABASE_URL的特定部分。 請參閱https://devcenter.heroku.com/articles/rack#database_access

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)

禮貌Grio

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM