1. mysql出现which is not functionally dependent on columns in GROUP BY clause报错
出现原因
原理层面
这个错误一般发生在mysql 5.7以及 5.7以上的版本中,其原因是mysql的默认配置中,sql_mode=“ONLY_FULL_GROUP_BY” 这个配置严格执行了 ‘SQL92标准’,所以很高网站维护人员在升级mysql版本时,都会修改 sql_mode 的配置,使其能兼容。
sql层面
从sql层面来说,输出的结果思做target list,就是 select 后面跟着的字段,还有一个地方是 group by column,就是 group 后面跟着的字段,由于开启了 ONLY_FULL_GROUP_BY 的设置,如果没有字段在 target list 以及 group by 字段中同时出现,那么 sql 就认为此条语句是不合法的,就会抛出错误。
查看是否为此问题
select @@sql_mode;

其中ONLY_FULL_GROUP_BY就是造成这个错误的罪魁祸首了,
解决办法
找到MySQL的配置文件,在linux系统上/etc/mysql/mysql.conf.d/mysqld.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 mysql restart;
刷新页面报错信息消失成功解决,再次连接上数据库查看sql_mode配置
select @@sql_mode;
到此已经成功解决了这个问题。
mysql高版本(8.0)sql_mode = only_full_group_by的解决办法
mysql出现which is not functionally dependent on columns in GROUP BY clause报错
网友评论