2012-04-09 41 views
0

我有下面的代碼行是本地工作正常,但休息時被推到生產(Heroku的):Where子句在Heroku(Postgres的)休息,但本地工作正常(MySQL的)

def self.find_unresolved_with_approved_client 
    self.joins(:client).where('clients.approved = true AND wish.status <> "Resolved"') 
end 

的錯誤我的heroku日誌如下:

2012-04-09T11:49:14+00:00 app[web.1]: ActionView::Template::Error (PGError: ERROR: column "Resolved" does not exist 
2012-04-09T11:49:14+00:00 app[web.1]:  16:  %th{ :class => :span10 } Subject 
2012-04-09T11:49:14+00:00 app[web.1]:  17:  %th{ :class => :span4 } Status 
2012-04-09T11:49:14+00:00 app[web.1]: LINE 1: ...ERE (clients.approved = true AND wishes.status != "Resolved"... 
2012-04-09T11:49:14+00:00 app[web.1]: : SELECT "wishes".* FROM "wishes" INNER JOIN "clients" ON "clients"."id" = "wishes"."client_id" WHERE (clients.approved = true AND wishes.status != "Resolved") ORDER BY wishes.id LIMIT 25 OFFSET 0): 

爲什麼它試圖在生產上進行列比較時,它在本地進行字面比較?

+0

您是否遷移數據庫? – Hauleth 2012-04-09 12:13:23

+0

是的,遷移,種子 - 它沒有工作。 所以我重置數據庫,再次遷移和種子 - 沒有運氣。 然後我嘗試重新啓動我的應用程序,仍然沒有骰子。 – HaaR 2012-04-09 12:14:39

+0

這是雙引號。 SQL標準說「標籤」是用於列和表格之類的東西,而「值」是用於值。當然,MySQL做的事情有點不同。 因此,將「已解決」更改爲「已解決」,您應該可以。 – 2012-04-09 17:04:29

回答

2

您應該將查詢更改爲.where('clients.approved =?AND wish.status!=?',true,'Resolved') 這會使適配器爲您構建查詢,問題,其中不同的數據庫具有稍微不同的查詢語法

相關問題