由于使用的mysql版本5.7.23
查看sql_model参数命令:
select @@sql_mode;
发现:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
第一项默认开启ONLY_FULL_GROUP_BY
ONLY_FULL_GROUP_BY的意思是:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现否则就会报错,或者这个字段出现在聚合函数里面。
解决方案:
由于每次重新启动mysql都会出现这个问题,所以通过修改修改my.cnf 配置文件(windows中为my.ini)来彻底解决
查找实际使用的my.cnf(几次没找对 修改了不起效果)
一般为/etc/my.cnf
修改该配置文件 添加
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
service mysqld restart
select @@sql_mode; 修改成功