技术文摘
MySQL 中 ONLY_FULL_GROUP_BY 如何禁用
MySQL 中 ONLY_FULL_GROUP_BY 如何禁用
在 MySQL 数据库的使用过程中,ONLY_FULL_GROUP_BY 这个模式常常会给开发者带来一些困扰。ONLY_FULL_GROUP_BY 模式要求在使用 GROUP BY 语句时,SELECT 子句中的所有非聚合列必须包含在 GROUP BY 子句中,否则就会抛出错误。这在某些复杂查询场景下,限制了我们的灵活性,所以很多时候需要将其禁用。那么,如何在 MySQL 中禁用 ONLY_FULL_GROUP_BY 呢?
我们可以通过修改 MySQL 的配置文件来实现。对于不同的操作系统,配置文件的位置可能有所不同。在 Linux 系统下,通常配置文件路径为 /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 模式。修改完成后,保存文件,然后重启 MySQL 服务,使配置生效。
除了修改配置文件,我们还可以在 MySQL 会话级别禁用 ONLY_FULL_GROUP_BY。在进入 MySQL 客户端后,使用以下命令:
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
这条命令会临时移除当前会话中的 ONLY_FULL_GROUP_BY 模式。不过需要注意的是,这种方式只对当前会话有效,一旦会话结束,模式会恢复到原来的设置。
如果希望在全局级别禁用 ONLY_FULL_GROUP_BY,可以使用以下命令:
SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
执行该命令后,所有新创建的会话都会受到影响。但要注意,这需要有足够的权限,并且修改全局配置可能会对整个系统产生影响,需谨慎操作。
在实际开发中,禁用 ONLY_FULL_GROUP_BY 虽然能带来一定便利,但也可能导致查询结果不符合预期,所以要根据具体业务需求和数据情况来决定是否禁用,以及如何禁用。掌握这些禁用方法,能帮助我们在 MySQL 开发中更加得心应手。
TAGS: MySQL 数据库配置 禁用方法 ONLY_FULL_GROUP_BY
- CSS 中多行文本展开收起效果的实现方法
- 由一个 Getter 导致的悲剧
- []*T、[]T、[]*T 让人混淆
- 单例模式的关键字级别深度解析
- SpringBoot 中依环境加载不同配置的策略
- Python 爬取 iPhone 全部游戏免费榜实时排名后的发现
- Dto 与 Poco(或 Pojo)的区别,你清楚吗?
- 预防并发致使下游服务崩溃的若干方法
- 低代码应用程序开发的十项优秀实践
- 算法中的一致性哈希究竟是什么?
- CuPy 能让 Numpy 加速 700 倍?
- 在 Visual Studio Code 中运行 R 语言的方法
- Python 助力下载酷狗音乐之法
- HarmonyOS DataBinding 实用指南
- Spring Security 的四种权限控制模式