MySql关闭ONLY_FULL_GROUP_BY模式

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编码文件,替换原来的配置文件即可。

要禁用 MySQL 中的 `ONLY_FULL_GROUP_BY` 模式,可以通过修改 `sql_mode` 的设置实现。具体操作如下: ### 3.1 查看当前 `sql_mode` 设置 在修改之前,建议先查看当前的 `sql_mode` 设置,以确认是否已启用 `ONLY_FULL_GROUP_BY`。可以通过以下 SQL 语句查询当前会话或全局的 SQL 模式: ```sql SELECT @@sql_mode; ``` 若需查看全局设置,可使用以下命令: ```sql SELECT @@global.sql_mode; ``` 这些查询将返回当前生效的 SQL 模式列表,如 `STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION` 等[^2]。 --- ### 3.2 临时修改 `sql_mode` 如果仅需临时禁用 `ONLY_FULL_GROUP_BY` 模式,可以在当前会话中执行以下 SQL 命令: ```sql SET sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; ``` 该设置将在当前会话中生效,但不会影响其他会话或全局设置,且在 MySQL 重启后将失效。 --- ### 3.3 永久修改 `sql_mode` 若需永久禁用 `ONLY_FULL_GROUP_BY` 模式,需修改 MySQL 的配置文件(通常是 `my.cnf` 或 `my.ini`),在 `[mysqld]` 部分添加或修改以下配置: ```ini [mysqld] sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION ``` 保存配置文件后,重启 MySQL 服务以使更改生效: ```bash sudo systemctl restart mysql ``` 确保使用正确的配置文件,并在修改后重启 MySQL 服务[^2]。 --- ### 3.4 验证 `sql_mode` 是否已修改 修改完成后,再次执行以下命令验证 `sql_mode` 设置是否生效: ```sql SELECT @@global.sql_mode; ``` 确认返回的模式中不包含 `ONLY_FULL_GROUP_BY`,则表示禁用成功。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值