Heroku(PG :: Error:ERROR:列必须出现在GROUP BY子句中或用于聚合函数)

3

我在Heroku上遇到了错误,但在本地没有(两者都使用PostgreSQL)。

错误信息为:

ActiveRecord::StatementInvalid (PG::Error: ERROR:  column "posts.content" must appear in the GROUP BY clause or be used in an aggregate function

我猜测这与我发布模型中的这一行有关:

我怀疑这与我发布模型中的这一行有关:

scope :with_tags, lambda { |tags| joins(:tags).group('posts.id').where(:tags => { :id => tags.map { |t| t.id } } ).having("COUNT(*) = ?", tags.length) }

为什么只在Heroku上发生了这种情况?我该如何解决它?

我对此并不太确定,这就是为什么我要添加注释的原因,但尝试将“posts.content”与“post.id”放在“.group”括号中。 - Jeff_Hd
我添加了它,现在它给了另一列错误, 一定有比手动添加所有帖子列更好的方法来修复它...此外,我仍然想知道为什么它只在Heroku上发生而不是在本地PG上。 - Gal Ben-Haim
我认为这是Postgres 9.1和9.0之间的差异。尝试在Heroku上更新您的版本:https://devcenter.heroku.com/articles/upgrading-postgres-versions - Jeff_Hd
PostgreSQL的更新仅适用于专用数据库,由于我仍在开发中,因此我正在使用共享数据库。 - Gal Ben-Haim
尝试使用Heroku共享PostgreSQL插件:https://devcenter.heroku.com/articles/heroku-shared-postgresql - jordinl
1个回答

1
正如有人指出的那样,这是Postgres 9.0的问题,在Postgres 9.1中已经得到解决。在Heroku中,您可以使用Heroku共享PostgreSQL附加组件代替默认的数据库,这应该可以解决问题。

为什么我不能在免费账户上安装插件? - Gal Ben-Haim
您可能需要将信用卡添加到您的账户中,尽管您不会被收取任何费用... - jordinl
有什么想法,如果我使用的是PostgreSQL 9.1.6? - Richlewis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接