2012-05-29 2 views
0

저는 RoR을 시작한 사람이고 MySQL을 사용하여 응용 프로그램을 개발하고 있습니다. 그러나 Heroku는 Postgres를 사용하기 때문에 제 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은 MySQL처럼 불법적 인 GROUP BY 구문을 허용하지 않습니다. –

+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

그들은 당신이 뭘 하려는지 지원하지 않는 그에게 Heroku에 포스트 그레스의 이전 버전을 사용 . Heroku Shared PostgreSQL 애드온을 사용하면이 문제를 해결할 수 있습니다.

그러나 개발 환경은 Heroku 환경으로 가능한 한 많이 보일 것이라고 제안합니다. 이것은 동일한 버전의 루비와 동일한 DB를 사용하는 것을 의미합니다.

+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 데이터베이스'를 찾은 후에도 여전히 같은 오류가 발생한다. Postgres에 대한 나의 GROUP 합법성을 어떻게 만들 수 있는지에 대한 아이디어가 있습니까? – Silver