2011-05-31 28 views
1

我有一個Heroku應用程序試圖連接到EC2上的Postgres數據庫。下面是我得到的問題:異常ActiveRecord :: AdapterNotSpecified在連接Heroku時發生<-> Postgres(EC2)

2011-05-30T23:07:48+00:00 app[web.1]: /app/.bundle/gems/ruby/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:66:in `establish_connection': database configuration does not specify adapter (ActiveRecord::AdapterNotSpecified) 

2011-05-30T23:07:48+00:00 app[web.1]: from /app/.bundle/gems/ruby/1.8/gems/activerecord-3.0.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:60:in `establish_connection' 

我跟着Heroku的說明中描述here建立在Heroku的應用程序的數據庫配置。這裏有一些其他的東西,可能會幫助:

  1. 我可以連接到PostgreSQL數據庫使用我的計算機上的psgql管理(展示了端口轉發和聽主機設置正確..和我沒有任何」 m不允許只有我的IP才能進入 - 它的野性使得所有ips都可以連接)

  2. 我在EC2上運行的postgresql版本是8.4,而Heroku通常在其共享數據庫上使用9.0。這可能是問題嗎? (我沒有解決這個問題的原因是因爲我不知道在哪裏可以找到pg_upgrade ...)

在此先感謝!

回答

1

@amehta,no,8.4和9.0不是你的問題。我的天真猜測是你的配置丟失:

adapter: postgresql 

這個問題完全是你的Heroku設置的本地。嘗試從Heroku手動連接到EC2:

require 'postgres' 
conn = PGconn.connect('amazone-host', 5432, '', '', 'dbname', 'username', 'pass') 
puts conn.exec('SELECT version()')[0] 

看看您是否可以進一步隔離問題。

+0

感謝您的提示!你完全在Heroku設置中(而不是版本,防火牆等),你完全不知道這個問題。但是,我完全按照Heroku指定的說明操作,仍然無法連接EC2上的數據庫。無論如何,我可以從Heroku控制檯查看數據庫配置嗎? – amehta 2011-05-31 18:38:37

+0

所以我找到了一種方法來查找數據庫配置文件(放置File.read(Rails.configuration.database_configuration_file)),但它有點沒用,因爲我甚至無法連接到heroku控制檯,因爲應用程序崩潰,因爲缺乏數據庫連接 – amehta 2011-05-31 18:42:52

+0

'heroku addons | grep POSTGRES'的幫助? – 2013-06-13 11:34:52

0

的問題是,Heroku上覆蓋的database.yml ....所以當你打電話的ActiveRecord :: Base.establish_connection(:external_db)沒有.yml定義爲DB

相關問題