2
切换一个滑轨应用程序从MySQL到的Postgres提供了以下错误:交换MySQL来Postgres的:“列必须出现在GROUP BY子句或在聚合函数可以使用”
ERROR: column "contacts.id" must appear in the GROUP BY clause or be used in an aggregate function
以下是在范围问题:
class User < MyModel
def self.top_contacts(timeframe = 1.week.ago, limit = 5)
Contact.unscoped
.where('created_at between ? and ?', timeframe, Time.now)
.group(:user_id)
.order('sum(score) DESC')
.limit(limit)
.includes(:user)
.collect{|x| x.user}
end
end
- 如何解决这一问题?
- 不使用Rails作为数据库抽象层确保切换数据库应该无缝工作?
有是可以在一个地方做了更加持久的解决方案(如配置也许)或改变所有查询来做到这一点是唯一的方法? – user3188544
@ user3188544谢谢! RoR必须有一些关于使用的SQL方言的标志或设置。这可能是一种方式。另一种方法可能是如果您仅选择实际列,或者您使用聚合查询(例如,“MIN(列名)”作为列名)。 – peterh