最近小编在进行数据库迁移的时候遇到一些问题具体的报错情况如下:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column '库名.表名' 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就开始报错了。后来经查询是数据库做了限制
sql_mode=only_full_group_by。 所以报错了
解决办法:
方法一:
修改mysql的配置文件,通过手动添加sql_mode的方式强制指定不需要only_full_group_by属性。重启mysql,在重启mysql的过程中会有链接的问题,不过重启完就好了。
方法二:
sql语句暂时性修改sql_mode ,这种修改方式是非持久的,重启mysql服务之后,only_full_group_by还会出现。
错误原理:
mysql5.7版本以上会默认sql_mode='only_full_group_by',很多从5.6升级到5.7时为了语法兼容,大部分都会调整sql_mode,使其保持和5.6一致。
tips:查看sql_mode的语句为 select @@GLOBAL.sql_mode;
今天的分享就到这了拉~希望能帮到你哦