Mysql 关闭ONLY_FULL_GROUP_BY

bug原因:

对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中。简而言之,就是SELECT后面接的列必须被GROUP BY后面接的列所包含。
如:
select a,b from table group by a,b,c; (正确)
select a,b,c from table group by a,b; (错误)
这个配置会使得GROUP BY语句环境变得十分狭窄,所以一般都不加这个配置。
查看mysql是否开启了ONLY_FULL_GROUP_BY
select @@global.sql_mode
如果返回值包含 ONLY_FULL_GROUP_BY,那么说明mysql开启了ONLY_FULL_GROUP_BY。

解决方法:

去掉 返回值中的ONLY_FULL_GROUP_BY,将剩下的返回值拷贝出来,打开mysql的ini配置文件,将拷贝下来的配置追加到[mysqld]后面
sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’
注意要用单引号括起来。
然后重启mysql服务
特别说明:mysql停止/重启命令

win下
net stop mysql
net start mysql

如果是以docker的方式安装的mysql,在不知道ini配置文件的路径的时候,可以先用

docker inspect 容器名

来查看配置文件的路径,如果配置文件没有挂载在宿主机上,那就执行

docker exec -it 容器名 bash

进入容器。然后根据上面查看的路径找到配置文件修改

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值