您的位置:首页 > 数据库 > SQL

mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by

2018-10-13 11:19 387 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_34828072/article/details/83036708

由于使用的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; 修改成功

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: