
MySQL sql_mode=only_full_group_by问题解决办法
发布日期:2025-04-15 15:02:36
浏览次数:6
分类:精选文章
本文共 1124 字,大约阅读时间需要 3 分钟。
在服务器数据库查询中使用了GROUP BY语句,结果却报出了以下错误:
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'csc_risk.a.DefaultDate' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by, Time: 0.035000s
于是,将部分数据迁移到本地进行测试。发现SQL语句可以正常执行,并查看了数据库版本。
原因分析:
MySQL 5.7版本默认设置了mysql sql_mode = only_full_group_by
属性,导致报错。 验证数据版本:
为了确认是否是数据版本问题,查询版本信息:SELECT VERSION()
结果显示数据库版本为5.7.24。
解决方法:
了解到原因后,解决方案如下:查看当前SQL模式:
查询SQL模式设置:SELECT @@sql_mode;
返回值为:
ONLY_FULL_GROUP_BY,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模式:
为避免再次出现类似问题,可以通过以下命令关闭only_full_group_by
模式:SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
请注意:上述命令会修改全局SQL模式设置,对于新建的数据库有效。如果是已有数据库,则需要在对应数据库中执行类似操作:
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';
通过上述步骤,可以解决GROUP BY语句在MySQL 5.7版本下的兼容性问题。
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年05月15日 02时56分21秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MAC M1大数据0-1成神篇-25 hadoop高可用搭建
2025-04-11
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
2025-04-11
mac 搭建APK反编译环境[转]
2025-04-11
macOS系统上安装JDK
2025-04-11
Mac电脑怎么读写不了移动硬盘?解决苹果电脑不能读写移动硬盘问题
2025-04-11
MangoDB4.0版本的安装与配置
2025-04-11
Manjaro 24.2 “Yonada” 发布:尖端功能与精美界面再度进化
2025-04-11
mapping文件目录生成修改
2025-04-11
MapReduce程序依赖的jar包
2025-04-12
Map的深浅拷贝的探究
2025-04-12
MariaDB的简单使用
2025-04-12
MaterialForm对tab页进行隐藏
2025-04-12
materialTabControl1_SelectedIndexChanged的使用
2025-04-12
Member var and Static var.
2025-04-13
memcached缓存服务器的安装
2025-04-13
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
2025-04-13