项目中出现如下错误:
java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'b.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1009)
使用的是mysql,大概意思是:
查询的列不是在分组子句子句中,并且包含非聚合的列(b.id)。这与sql_mode = only_full_group_by 不符合。
通过查询和修改sql_mode无效:
查询sql_mode
select @@sql_mode;
复制查询出来的值,修改 sql_mode:
set session sql_mode='复制出来修改后的值'
按照这样做无效。
接下来,我们打开mysql的安装目录,打开mysql.ini文件,在“[mysqld]”下添加:
sql_mode='复制出来修改后的值'
然后再重启mysql就可以了。