热爱技术,追求卓越
不断求索,精益求精

修改mysql的sql_mode

项目中出现如下错误:

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就可以了。

赞(0)
未经允许不得转载:LoveCTO » 修改mysql的sql_mode

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

热爱技术 追求卓越 精益求精