关闭only_full_group_by
时间: 2023-09-21 13:12:11 浏览: 206
要关闭 MySQL 中的 `only_full_group_by` 模式,你可以按照以下步骤操作:
1. 打开 MySQL 配置文件,通常是 `my.cnf` 或 `my.ini`。这个文件位于 MySQL 安装目录的 `etc` 或 `conf.d` 文件夹下。
2. 在文件中找到 `[mysqld]` 段落,如果没有则请自行添加。
3. 在 `[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"
```
4. 保存并关闭配置文件。
5. 重启 MySQL 服务,以使配置更改生效。
这样就成功关闭了 `only_full_group_by` 模式。请注意,这可能会影响到某些查询的结果,因为 MySQL 将不再强制要求在 GROUP BY 子句中出现的列必须在 SELECT 子句中显示。
相关问题
关闭 only_full_group_by
关闭 only_full_group_by可以通过以下步骤实现:
1. 首先,检查mysql是否开启了only_full_group_by,可以通过执行以下SQL语句来查看:`select @@global.sql_mode`
2. 如果返回值包含"ONLY_FULL_GROUP_BY",说明mysql开启了only_full_group_by。
3. 要关闭only_full_group_by,需要编辑mysql的ini配置文件。根据你的操作系统和安装方式的不同,配置文件的位置可能会有所不同,可以使用命令`docker inspect 容器名`来查找配置文件的路径。
4. 打开mysql的ini配置文件,将返回值中除了only_full_group_by以外的其他配置项拷贝出来。
5. 在[mysqld]部分添加以下行:`sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'`,注意要用单引号括起来。
6. 保存配置文件并重启mysql服务,具体重启命令取决于你的操作系统和安装方式。
- 在Windows下,可以使用命令`net stop mysql`停止mysql服务,然后使用命令`net start mysql`启动mysql服务。
- 如果是通过docker安装的mysql,在不知道配置文件路径的情况下,可以使用命令`docker exec -it 容器名 bash`进入容器,然后根据之前查找到的路径修改配置文件。
7. 重启后,only_full_group_by就会被关闭了。你可以再次执行`select @@global.sql_mode`来验证是否成功关闭了only_full_group_by配置项。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [MySql版本问题sql_mode=only_full_group_by的完美解决方案](https://download.csdn.net/download/weixin_38648968/12826945)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [MySQL 关闭 ONLY_FULL_GROUP_BY](https://blog.csdn.net/WangKun_0612/article/details/106906945)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [Mysql 关闭ONLY_FULL_GROUP_BY](https://blog.csdn.net/hello123yy/article/details/107618475)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
关闭only_full_group_by 检测
要关闭MySQL的only_full_group_by检测,你可以使用以下方法之一:
1. 修改MySQL配置文件:打开MySQL配置文件(通常是my.cnf或my.ini),找到[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"
```
确保没有only_full_group_by在sql_mode中。保存并重启MySQL服务。
2. 在会话级别修改sql_mode:如果你无法修改MySQL配置文件,可以在执行查询前,使用以下命令修改会话级别的sql_mode:
```
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";
```
确保没有only_full_group_by在sql_mode中。
请注意,关闭only_full_group_by检测可能会影响到你的查询结果,因此在执行之前,请确保你的查询语句是正确的,并且不会导致数据不一致或错误的结果。
阅读全文