MySQL 出现 which is not functionally dependent on columns in GROUP BY clause;解决方法
作者:mmseoamin日期:2023-12-21

MySQL 出现 which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by错误 解决办法 

项目跑到一个新服务器上保存了 一个新安装的数据库,出现了问题 具体报错信息如下:

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘aigcc.t2.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

问题出现在group by 。对于group by聚合操作,如果在select中的列没有在group by中出现,那么这个SQL是不合法的,因为列不在group by从句中,所以设置了sql_mode=only_full_group_by 的数据库,在使用group by时就会报错。

既然知道了问题,那么修改这个配置就可以了,找到MySQL的配置文件,在linux系统上/etc/my.cnf文件,查询sql_mode字段,我并没有在配置文件中找到这个关键字,所以我手动添加进去:

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

需要注意的一点是一定要添加在[mysqld]配置内,这样添加完后重启mysql才会生效,退出数据库:exit,重启命令:

service mysqld restart;
这样问题就完美解决。点个赞吧