簡體   English   中英

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

[英]Grails: using ANY_VALUE() in criteria query to avoid `only_full_group_by` in MYSQL version 5.7+

我最近升級從5.6 MySQL來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的方法目前發生了變化, 這里提到了這一點

因此,根據這些更改日志,我們可以通過以下方式解決此問題:

  1. 禁用ONLY_FULL_GROUP_BY ,我認為這不是一個好方法。
  2. 使用ANY_VALUE()來引用非ANY_VALUE()列。

但是沒有這樣的選項在grails標准查詢中使用any_value() 將查詢更新為低級SQL語句或使用HQL可能有所幫助,但這需要在多個位置進行更改。

那么,有沒有更好的方法可以用來處理上述情況?

如果ANY_VALUE不可用,您可以簡單地使用MINMAX

話雖如此,我寧願調查每個查詢並從修復GROUP BY部分開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM