Ruby on Rails - MySQL和PostGres

时间:2012-05-29 12:54:41

标签: ruby-on-rails postgresql heroku

我是一名RoR初学者,正在使用MySQL开发我的应用程序,但Heroku使用 Postgres,所以我的bel工作不正常。

我搜索了输出的错误但在我的情况下,因为我正在做 HABTM表之间的查询,事情进展不顺利。

基本上,产品has_and_belongs_to_many类别。 我的关系是 所有设置和一切都在本地工作,但在部署时会发生500错误。

所以没有进一步的延迟,问题是:

(...以前在本地和heroku上运行良好的查询......)

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错误是:“products.id”必须出现在GROUP BY子句中 用于聚合函数。

这告诉我错误是GROUP BY和drom我读过的文档,我必须把所有列放在这里。但由于它是一个HABTM关系,只有其他列,并且当我说它时,arel点正常运行。

我知道已有线程,但没有人修复我的 问题

提前谢谢。

此致 Miguel A。

1 个答案:

答案 0 :(得分:0)

这与此有关:

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

他们在Heroku中使用较旧版本的postgres,它不支持你想要做的事情。使用Heroku Shared PostgreSQL插件可以解决这个问题。

尽管如此,我还建议你的开发环境尽可能像Heroku环境一样。这意味着使用相同版本的红宝石和相同的DB ......