关于Mysql5.7高版本使用group by新特性报错

本文介绍如何通过修改MySQL配置文件my.cnf来永久禁用ONLY_FULL_GROUP_BY模式,包括步骤说明及常见错误避免,确保查询语句正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进入mysql客户端(navicat),打开命令列界面,执行语句:

select @@GLOBAL.sql_mode;

会发现查询出来的结果是:

+--------------------------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.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,而我们要做的就是要去掉这玩意;

那么怎么去掉呢,直接在客户端执行命令关掉不就可以了么,set @@global.sql_mode = .......,执行成功,然后执行命令查看一下,果然第一项不在了,然后我们再重启一下mysql服务,再次查询,还在..哈哈。。

那么,接下来放绝招了,还是从Mysql的配置文件下手吧。

找到my.cnf(linux中的路劲在etc中),编辑它~把以下命令放到合适位置,重启mysql 服务,OK~报错没啦~

[mysqld]
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]”下面即可;

千万要注意的是,网上很多方案都差不多,但是就是成功不了,原因是网上很多帖子给出的方案都是前面多了一个set,按照上面的方法就可以了~

set sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION       
//前面多了个set 是不对滴~

转载自:https://www.cnblogs.com/wt645631686/p/7675830.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值