2012-05-29 144 views
0

我是一個RoR begginer,我正在開發使用MySQL的應用程序,但Heroku使用PostgreSQL ,所以我的arel工作不正常。Ruby on Rails - MySQL和PostGres

我搜索了關於輸出的錯誤,但在我的情況下,因爲我在做一個HABTM表之間的查詢 ,事情並沒有那麼順利。

基本上,產品has_and_belongs_to_many類別。 我的關係是 所有設置和一切本地工作,但部署時發生500錯誤。

於是不再拖延,問題是:

if params[:fc].present? #(checks if checkboxes have been ticked) 

arel=arel.joins('INNER JOIN categories_products ON products.id=categories_products.product_id') 

arel=arel.where('categories_products.category_id in (:fc_list)', :fc_list => params[:fc]).uniq 

arel=arel.group('product_id').having('count(category_id) = :size', :size => params[:fc].size) 

end 

這樣的想法是讓用戶(...這工作好本地和在Heroku上......以前查詢)選中複選框列表,然後顯示選中類別中的所有產品。

我的heroku錯誤是:「products.id」必須出現在GROUP BY子句中,或者在集合函數中使用 。

這告訴我錯誤是GROUP BY和drom我讀的文檔,我必須把所有的列放在這裏。但由於它是一個HABTM關係,所以只有其他列在那裏,當我把它放置時,arel點正常運行。

我知道這裏已經有線程,但沒有人修復了我的 問題。

預先感謝您。

問候, 米格爾A.

+0

不要試圖爲數據庫A開發數據庫並釋放數據庫B,那樣會失敗。 PostgreSQL不接受非法的GROUP BY結構,就像MySQL一樣。 –

+0

嗯好的。恐怕我必須這樣做,或者完全遷移到Postgres。你知道我怎麼能把它作爲合法的GROUP BY嗎?我很難過。先謝謝你。 – Silver

回答

0

這是關係到這一點:

Heroku (PG::Error: ERROR: column must appear in the GROUP BY clause or be used in an aggregate function

他們使用的Postgres的舊版本中的Heroku不支持你想要做什麼。使用Heroku共享的PostgreSQL插件可以解決這個問題。

雖然,我也建議你的開發環境看起來儘可能的和Heroku環境一樣。這意味着使用相同版本的紅寶石和相同的數據庫...

+0

我發現[this](http://blog.heroku.com/archives/2012/5/1/heroku_s_new_free_postgresql_9_1_development_database/)是否100%免費,如果我更新它會解決我的問題嗎?問候 – Silver

+0

我這麼認爲,我剛纔讀到,我建議你已經棄用,他們推薦使用postgres:dev。我認爲你也將不得不按照步驟來推廣DB – jordinl

+0

去新的'dev數據庫'後仍然有同樣的錯誤。關於如何讓我的GROUP合法用於Postgres的任何想法? – Silver