MySQL-this is incompatible with sql_mode=only_full_group_by如何解决

225 阅读1分钟

0x1 问题原因

mysql 5.7.5版本以上默认的配置是 sql_mode=”ONLY_FULL_GROUP_BY”,按照”SQL92标准”。

由于开启了ONLY_FULL_GROUP_BY,如果select的字段不在group by中,并且select的字段没有使用到聚合函数(SUM、AVG、MAX、MIN等)的话,这条sql就会爆 this is incompatible with sql_mode=only_full_group_by

0x2 从配置中解决

修改mysql的配置 my.cnf ,在my.cnf中把sql-mode中的only_full_group_by去掉

// my.cnf
[mysqld]
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服务

0x3 在每次连接的时候重新设置sql-mode

在每次建立连接的时候设置sql-mode,这个设置只对当前的连接生效,如果是想要一劳永逸,还是直接从配置入手解决。