首页 > 数据库 >MySQL 8.0 如何禁用 ONLY_FULL_GROUP_BY

MySQL 8.0 如何禁用 ONLY_FULL_GROUP_BY

时间:2025-01-15 11:15:43浏览次数:1  
标签:8.0 FULL GROUP 禁用 ONLY mode sql

  在 MySQL 8 中,ONLY_FULL_GROUP_BY​ 是默认启用的 SQL 模式之一。如果你希望禁用 ONLY_FULL_GROUP_BY​,可以通过以下几种方式实现:


方法 1:临时禁用(仅对当前会话有效)

  你可以通过修改当前会话的 sql_mode​ 来临时禁用 ONLY_FULL_GROUP_BY​。

步骤:

  1. 查看当前的 sql_mode​:

    SELECT @@sql_mode;
    

    输出可能类似于:

    ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    
  2. 移除 ONLY_FULL_GROUP_BY​:

    SET SESSION sql_mode = (SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));
    
  3. 验证是否已移除:

    SELECT @@sql_mode;
    

    输出中不应再包含 ONLY_FULL_GROUP_BY​。


方法 2:全局禁用(对所有会话有效)

  如果你希望全局禁用 ONLY_FULL_GROUP_BY​,可以修改全局的 sql_mode​。

步骤:

  1. 查看当前的全局 sql_mode​:

    SELECT @@GLOBAL.sql_mode;
    
  2. 移除 ONLY_FULL_GROUP_BY​:

    SET GLOBAL sql_mode = (SELECT REPLACE(@@GLOBAL.sql_mode, 'ONLY_FULL_GROUP_BY', ''));
    
  3. 验证是否已移除:

    SELECT @@GLOBAL.sql_mode;
    

方法 3:通过配置文件永久禁用

  如果你希望永久禁用 ONLY_FULL_GROUP_BY​,可以通过修改 MySQL 配置文件来实现。

步骤:

  1. 打开 MySQL 配置文件:

    • Linux 系统:/etc/my.cnf​ 或 /etc/mysql/my.cnf
    • Windows 系统:my.ini
  2. 找到 [mysqld]​ 部分,修改或添加 sql_mode​ 配置项,移除 ONLY_FULL_GROUP_BY​。例如:

    [mysqld]
    sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    
  3. 保存文件并重启 MySQL 服务:

    • Linux 系统:

      sudo systemctl restart mysql
      
    • Windows 系统:
      通过服务管理器重启 MySQL 服务。

  4. 验证是否生效:

    SELECT @@sql_mode;
    

注意事项

  1. 数据准确性:禁用 ONLY_FULL_GROUP_BY​ 后,MySQL 允许在 GROUP BY​ 查询中使用未明确分组的非聚合列。这可能导致查询结果不确定或不准确,因此需要谨慎使用。
  2. 生产环境:在生产环境中,建议保持 ONLY_FULL_GROUP_BY​ 启用,以确保查询的准确性和一致性。
  3. 兼容性:禁用 ONLY_FULL_GROUP_BY​ 后,某些在严格模式下会报错的查询可能会正常运行,但结果可能不符合预期。

总结

  • 临时禁用:使用 SET SESSION sql_mode​。
  • 全局禁用:使用 SET GLOBAL sql_mode​。
  • 永久禁用:修改 MySQL 配置文件并重启服务。

  根据你的需求选择合适的方法,但请务必注意禁用 ONLY_FULL_GROUP_BY​ 可能带来的数据准确性问题。

标签:8.0,FULL,GROUP,禁用,ONLY,mode,sql
From: https://www.cnblogs.com/shenhuanjie/p/18672625/how-to-disable-onlyfullgroupby-z28azoh

相关文章

  • UnityAPI:利器CullingGroup
    https://docs.unity3d.com/Manual/CullingGroupAPI.html这个API非常强大,可以快速的实现自定义的Occlusionculling和Lod系统,并且性能表现极佳。简要原理CullingGroup为了性能考虑,把所有的物体模拟为球形,传入摄像机后,检测球形与相机视窗的交集,通过onStateChanged通知应用......
  • Oracle 23ai新特性:使用列别名的 GROUP BY 和 HAVING 子句
    摘要随着数据库技术的不断发展,SQL语言也在不断进化,以更好地满足数据查询和分析的需求。本文将探讨如何在SQL查询中使用列别名(columnalias)或列位置(columnposition)来简化GROUPBY和HAVING子句,并提高查询的可读性和维护性。一、引言在SQL查询中,GROUPBY子句用于将......
  • THREE.js学习笔记5——FullScreen and Resizing
    这一小节学习FullscreenandResizing将THREE.js渲染的结果铺满整个屏幕,以及避免出现蓝色边框和超过画面限制的滚动renderer.setSize(window.innerWidth,window.innerHeight)*{padding:0;margin:0;}body{overflow:hidden;}.test{position:fixed;......
  • mysql使用count()执行select报错:ERROR 1140 (42000) In aggregated query without GRO
    1原因mysql的sql_mode默认开启了only_full_group_by模式2解决办法2.1命令解决(临时生效)查看sql_modeshowvariableslike'%sql_mode';showsessionvariableslike'%sql_mode';showglobalvariableslike'%sql_mode';修改sql_modesetglobalsql_......
  • VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动
    VMwareESXi8.0U3cmacOSUnlocker&OEMBIOS集成驱动版,新增12款I219网卡驱动VMwareESXi8.0U3cmacOSUnlocker&OEMBIOS集成网卡驱动和NVMe驱动(集成驱动版)发布ESXi8.0U3c集成驱动版,在个人电脑上运行企业级工作负载请访问原文链接:https://sysin.org/blog/v......
  • 班迪录屏电脑软件 Bandicam v8.0.1.2512 绿色便携解锁版
    点击上方蓝字睿共享资源关注我前言Bandicam绿色便携版是一个很棒的视频录制软件,被很多人认为是世界上最好的三个视频录制工具之一。它的好处在于,即使你的电脑配置不是很高,或者你的电脑已经用了很多年,它都能运行得很顺畅。而且,当你用它来录制视频时,声音和画面会完美地同步,不会出......
  • mysql,PostgreSQL,Oracle数据库sql的细微差异(2) [whith as; group by; 日期引用]
    sql示例(MySQL)WITH  temp1AS(    SELECTnameASresults    FROMUsersu    JOINMovieRatingmONu.user_id=m.user_id    GROUPBYm.user_id    ORDERBYCOUNT(*)DESC,left(name,1)    LIMIT......
  • MySQL 8.0.27 集群搭建——基于MGR方式的一主两从架构
    数据库:MySQL8.0.27安装包:mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar系统:rhel7.364位 1、准备工作说明:1.1至1.3均需在三台服务器执行.1.1、修改hosts文件--在hosts中设置hostname与IP映射绑定关系.[root@MySQL-827MGR-Master~]#cat<<EOF>>/etc/hosts192.168.133.11......
  • VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS Huawei (华为) 定制版
    VMwareESXi8.0U3cmacOSUnlocker&OEMBIOSHuawei(华为)定制版ESXi8.0U3c标准版,Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)、Hitachi(日立)、Fujitsu(富士通)、NEC(日电)、Huawei(华为)、xFusion(超聚变)OEM定制版请访问原文链接:htt......
  • ubuntu 18.04下neovim手动添加treesitter支持(c语言为例)
    环境准备rustcurl--proto'=https'--tlsv1.2-sSfhttps://sh.rustup.rs|shnode.jshttps://nodejs.org/dist/v16.20.2/node-v16.20.2-linux-x64.tar.xzneovimhttps://github.com/neovim/neovim-releases/releases/download/v0.10.3/nvim-linux64.tar.g......