2010-07-06 78 views
1

我部署了一個使用ActiveRecord的應用程序來Heroku,並且出現了內部服務器錯誤。它可以在我的本地機器上正常工作(數據庫是SQLite的地方)。以下是錯誤的日誌消息。新聞簡報表只是一個沒有關聯的表格。它只有一個電子郵件地址字段。我不知道PostgreSQL,我不確定這是什麼問題。Heroku Postgresql錯誤

"ActiveRecord::StatementInvalid - PGError: ERROR: relation "newsletters" does not exist 
:    SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull 
       FROM pg_attribute a LEFT JOIN pg_attrdef d 
       ON a.attrelid = d.adrelid AND a.attnum = d.adnum 
      WHERE a.attrelid = '"newsletters"'::regclass 
       AND a.attnum > 0 AND NOT a.attisdropped 
      ORDER BY a.attnum 
: 

這是在出現錯誤時調用的代碼。

post :index, :map => "/newsletter" do 
    email=params[:email] 
    @signup=Newsletter.new(:email=>email) 
    render "newsletter/index",:layout => false 
    end 

回答

0

我解決了我的問題。所有我必須是heroku db:push sqlite://db/local.db

1

我想的Heroku會發現你的本地數據庫,所以你只要寫:

heroku db:push 

如果你想從服務器獲取數據:

heroku db:pull 
0

這個問題的根源在於ActiveRecord試圖通過稱爲「目錄查詢」的東西來理解給定表的結構。這是針對數據庫的元數據關係的查詢,以瞭解那裏正在發生的事情。

該查詢假定關係已經存在,並且因爲它沒有,它就會被一個神祕的消息炸燬。這可能屬於「將此報告給ActiveRecord」(如果尚未修復的話)作爲一種常見故障情況下的次理想錯誤消息。