ONLY_FULL_GROUP_BY:该模式要求在执行包含GROUP BY子句的SQL查询时,SELECT子句中的非聚合列必须是出现在GROUP BY子句中的字段。
1、先通过系统变量@@sql_mode
来确认ONLY_FULL_GROUP_BY模式是否已启用
select @@sql_mode
在查询的结果中,如果有ONLY_FULL_GROUP_BY关键字,就表示已开启。
2、永久关闭 ONLY_FULL_GROUP_BY模式
找到mysql配置文件
windows一般在C:\ProgramData\MySQL\MySQL Server x.x下
inux一般在/etc/mysql/
目录下,文件名为my.cnf
,或者位于/etc/mysql/mysql.conf.d/
目录下,文件名为mysqld.cnf
编辑配置文件,增加以下配置:
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
(即第一步查询出来的结果,去掉ONLY_FULL_GROUP_BY)
异常及解决:windows环境,如果改完配置文件,mysql服务重启不起来,可能是文件编码问题,另存为 ANSI编码文件,替换原来的配置文件即可。