我是一个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.
不要试图为数据库A开发数据库并释放数据库B,那样会失败。 PostgreSQL不接受非法的GROUP BY结构,就像MySQL一样。 –
嗯好的。恐怕我必须这样做,或者完全迁移到Postgres。你知道我怎么能把它作为合法的GROUP BY吗?我很难过。先谢谢你。 – Silver