1、发生场景

    本地配置比较陈旧的项目版本

2、原因

    MySQL 5.7,实现检测功能的依赖。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认),MySQL拒绝选择列表查询,条件,或命令列表是指非聚合列既不是GROUP by子句中指定功能也不依赖他们。(5.7之前,MySQL不检测功能的依赖和ONLY_FULL_GROUP_BY在默认情况下不启用。 ONLY_FULL_GROUP_BY,对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在GROUP BY后面出现否则就会报错,或者这个字段出现在聚合函数里面。(Mysql5.7 GROUP BY文档说明)

3、解决方式

1、查看

    select @@GLOBAL.sql_mode

2、修改

set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';


set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';