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