only_full_group_by关闭
时间: 2023-04-30 10:01:18 浏览: 48
only_full_group_by是MySQL的一个SQL模式,它要求在GROUP BY语句中必须包含所有非聚合列。如果不包含所有非聚合列,MySQL会抛出错误。关闭only_full_group_by意味着可以在GROUP BY语句中省略非聚合列,但这可能会导致结果不准确。因此,建议在开发和生产环境中都开启only_full_group_by模式,以确保数据的准确性。
相关问题
关闭 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
ONLY_FULL_GROUP_BY是MySQL数据库的一个SQL模式,它要求在使用GROUP BY语句时,SELECT子句中的列必须是分组列或者使用聚合函数进行处理。在默认情况下,MySQL的一些版本会开启ONLY_FULL_GROUP_BY模式,但有些版本则不会开启。如果你想查询当前是否开启了ONLY_FULL_GROUP_BY模式,可以使用以下命令:
```sql
SELECT @@sql_mode;
```
如果查询结果中包含"ONLY_FULL_GROUP_BY"字样,则表示开启了ONLY_FULL_GROUP_BY模式。如果你想达到相同效果而不禁用ONLY_FULL_GROUP_BY模式,可以使用ANY_VALUE()函数来引用非聚合列。这样就可以绕过ONLY_FULL_GROUP_BY的限制了。
另外,对于解决ONLY_FULL_GROUP_BY模式的问题,可以参考MySQL官方文档中提供的方法,或者查找专门介绍解决方案的文章进行参考。需要注意的是,对于设置的修改只在当前会话中生效,如果想要永久有效,需要修改MySQL的配置文件。可以通过修改配置文件中的sql_mode参数来去除ONLY_FULL_GROUP_BY模式。
希望以上解释能够帮助到你理解ONLY_FULL_GROUP_BY模式的含义和解决方法。