共计 字 • 阅读约 min

原因

MySQL 5.7 或者更高的版本中使用 group by 会报如下错误: this is incompatible with sql_mode=only_full_group_by,这是因为 MySQL 默认启用了 ONLY_FULL_GROUP_BY。

select @@sql_mode

可以看到结果:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE...

这就使得我们的 SQL 语句中必须使用所有 select 的字段来 group by,不然就不能执行

解决方法

最稳妥的方法:修改配置文件

找到 my.ini(windows) 或 my.conf(Linux) 文件,Linux 对应的位置一般是 /etc/my.conf

一定要写在[mysqld]节点下面,否则不会生效

[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:

service mysqld restart


文章更新于: 2021-4-18 9:57:11