您的位置:首页 > 数据库

this is incompatible with sql_mode=only_full_group_by

2017-07-29 00:00 337 查看
摘要: ; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'kjwl.a.description' which is not functionally dependent on columns in GROUP BY clause; this is incompatible w

项目换了个数据库报错:

; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'kjwl.a.description' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

主要因为某些 sql group by 语句写得不规范,且数据库设置语法规则比较严格的时候会报错。如果不想改 sql 语句则要改 mysql 的设置:

sql_mode 中去掉 only_full_group_by 项。

可以在 mysql 命令行下输入 SELECT @@sql_mode; 查看当前 sql_mode 有哪些设置。

然后可以执行:

set @@GLOBAL.sql_mode='';

set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

即重设此值。但这还有一个问题,就是重启 mysql 后设置会被还原。所以上面设置要放到 mysql 的配置文件中,默认是 /etc/my.cnf

在 [mysqld] 项下增加(只要里面没有only_full_group_by 就行了)

# to solve problem: this is incompatible with sql_mode=only_full_group_by

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

网上还有说增加的项写成像执行命令的语句一样,但我用自己的版本试则启动失败,用上面那种方式就可以。

参考(有改动):http://www.cnblogs.com/jim2016/p/6322703.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐