2012-08-14 223 views
1

在使用find語句構建的表上部署到heroku時遇到問題。他們在使用本地服務器時運行良好,但在heroku上沒有起作用我得到'很抱歉,但出了問題'錯誤。我遇到了一些其他線程,這表明它可能是postgresql中區分大小寫的問題,而不是我對此知之甚多,但我試圖確保大寫在整個過程中始終保持一致,而且似乎沒有做到的差。ActiveRecord :: StatementInvalid(PG :: Error:錯誤:列不存在

Heroku的日誌

2012-08-14T00:31:30+00:00 app[web.1]: Processing by ApartmentsController#aptMenu as HTML 
2012-08-14T00:31:30+00:00 app[web.1]: Completed 500 Internal Server Error in 4ms 
2012-08-14T00:31:30+00:00 app[web.1]: 
2012-08-14T00:31:30+00:00 app[web.1]: LINE 1: SELECT "apartments".* FROM "apartments" WHERE (bed = 0) 
2012-08-14T00:31:30+00:00 app[web.1]: ActiveRecord::StatementInvalid (PG::Error: ERROR: column "bed" does not exist 

控制器

def aptMenu 
    @apartments = Apartment.all 
    @studio = Apartment.find(:all, :conditions => ["bed = 0"]) 

架構

create_table "apartments", :force => true do |t| 
t.integer "bed" 

林與此看到,因爲根據一切我可以看到「牀」一欄確實存在很困惑。任何幫助將非常感激。

回答

3

發生此問題的原因是生產數據庫上的公寓表缺少列牀。您需要遷移到生產端。

heroku rake db:migrate

看看新列出現。

確保你重新啓動你的heroku。

heroku restart

+0

嘗試過,但不幸的是無濟於事。事情是,'牀'欄是原來的專欄之一,它以後沒有添加過,所以如果它沒有被遷移,但其餘的都是有的,那就很奇怪。 – sonobenissimo 2012-08-14 19:12:20

+0

你可以試試嗎? '@studio = Apartment.find_all_by_bed(0)'而不是您當前的查找方法? – 2012-08-14 19:28:27

+0

嘗試了它,它沒有工作(給了一個沒有方法發現的錯誤),但給了我切換到一個where語句的想法,我可能應該已經嘗試過,但在我做了它開始工作!如果ya沒有提供幫助,非常感謝幫助可能會陷入循環一段時間。 – sonobenissimo 2012-08-14 20:24:21

相關問題