技术文摘
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
- Win11 升级后 Win10 任务栏出现 BUG 的解决办法
- 绕过 Win11 TPM 安装 Win11:用 Win10 ISO 替换 install.wim 方法
- Win11 正式版是否值得升级?详细介绍
- Win11 开始菜单推荐项目的删除方法
- Win11 快捷方式箭头的删除方法
- Win11显卡驱动安装受阻的解决之道
- Win11最低硬件要求有哪些 怎样判断电脑是否符合Win11硬件要求
- Win11 防火墙的关闭方式
- 如何知晓所购电脑是否已升级至 Windows11 ?
- Win10 S 模式能否升级至 Windows11
- Windows10 与 Windows11 的差异何在?
- 电脑未达 Win11 升级要求能否继续用 Win10
- 购买 Win10 电脑后能否安装 Win11
- 联想小新 air15 升级 Win11 的方法及安装教程
- Win11 免费升级的持续时长是多久