Grails:在条件查询中使用ANY_VALUE()以避免MYSQL版本5.7+中的“only_full_group_by”

问题描述 投票:0回答:1

我最近将MySQL从5.6升级到5.7.14,现在所有使用groupProperty的标准查询都失败了,错误类似于下面提到的错误:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test_dev.this_.user_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

这是由于MySQL处理GROUP BY的方法目前发生了变化,here提到了这种方法。

因此,根据这些更改日志,我们可以通过以下方式解决此问题:

  1. 禁用ONLY_FULL_GROUP_BY,我认为这不是一个好方法。
  2. 使用ANY_VALUE()来引用非聚合列。

但是在grails标准查询中没有使用any_value()的选项。将查询更新为低级SQL语句或使用HQL可能有所帮助,但这需要在多个位置进行更改。

那么,有没有更好的方法可以用来处理上述情况?

mysql grails gorm
1个回答
0
投票

如果ANY_VALUE不可用,您可以简单地使用MINMAX

话虽如此,我宁愿调查每个查询,并从修复GROUP BY部分开始。

© www.soinside.com 2019 - 2024. All rights reserved.