我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQL 报错 sql_mode=only_full_group_by 问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQL 报错 sql_mode=only_full_group_by 问题

SQL 报错 sql_mode=only_full_group_by 问题

原因分析

一、原理层面
这个错误发生在mysql 5.7.5 版本及以上版本会出现的问题:
mysql 5.7.5版本以上默认的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,这个配置严格执行了"SQL92标准"。
很多从5.6升级到5.7时,为了语法兼容,大部分都会选择调整sql_mode,使其保持跟5.6一致,为了尽量兼容程序。

二、sql层面
在sql执行时,出现该原因,简单来说就是:
由于开启了ONLY_FULL_GROUP_BY的设置,如果select 的字段不在 group by 中,
并且select 的字段未使用聚合函数(SUM,AVG,MAX,MIN等)的话,那么这条sql查询是被mysql认为非法的,会报错误…

解决
  1. 查看sql_mode的语句
select @@GLOBAL.sql_mode;

在这里插入图片描述
2. 通过sql语句暂时性修改sql_mode, 去掉ONLY_FULL_GROUP_BY,重新设置值

SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

上面是改变了全局sql_mode,对于新建的数据库有效。对于已存在的数据库,则需要在对应的数据库下执行:

SET sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
问题

重启mysql数据库服务之后,ONLY_FULL_GROUP_BY还会出现,所以这只是暂时性的。

来源地址:https://blog.csdn.net/weixin_45956838/article/details/128318353

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQL 报错 sql_mode=only_full_group_by 问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SQL 报错 sql_mode=only_full_group_by 问题

SQL 报错 sql_mode=only_full_group_by 问题 原因分析 一、原理层面 这个错误发生在mysql 5.7.5 版本及以上版本会出现的问题: mysql 5.7.5版本以上默认的sql配置是:sql_mode=
2023-08-21

Mysql8报错this is incompatible with sql_mode=only_full_group_by问题

MySQL8中“thisisincompatiblewithsql_mode=only_full_group_by”错误提示指在ONLY_FULL_GROUP_BY模式下,未对所有非聚合列进行分组。解决方法包括:修改sql_mode设置为兼容模式或调整查询,如对所有非聚合列分组或使用子查询隐式分组。
Mysql8报错this is incompatible with sql_mode=only_full_group_by问题
2024-04-02

MYSQL5.7版本sql_mode=only_full_group_by问题

下载安装的是最新版的mysql5.7.x版本,默认是开启了 only_full_group_by 模式的,但开启这个模式后,原先的 group by 语句就报错,然后又把它移除了。一旦开启 only_full_group_by ,感觉,group by 将变成
2016-08-03

解决mysql @@sql_mode问题---only_full_group_by

目录运行环境系统运行出现的问题上度娘查询的结果提供两个解决方案方案一(只适合暂时解决性的,mysql 重启就一朝回到解放前了)方案二(修改mysql 中的配置文件,达到当重启mysql 回去制动加载配置文件的内容)总结运行环境linux
解决mysql @@sql_mode问题---only_full_group_by
2024-09-04

MySQL报错:sql_mode=only_full_group_by 4种解决方法含举例,轻松解决ONLY_FULL_GROUP_BY的报错问题

​ 作为初学者,我们在使用MySQL的时候总是会遇到各种各样的报错,让人头痛不已。其中有一种报错,sql_mode=only_full_group_by,十分常见,每次都是老长的一串出现,然后带走你所有的好心情。 ​​ 出现这样的报错,并不
2023-08-17

解决MySql版本问题sql_mode=only_full_group_by

目录mysql版本问题sql_mode=only_full_group_byWindowssql_mode=only_full_group_by以及多种解决方案出错的sql情况解决方案1解决方案2MySql版本问题sql_mode=only
2022-11-19

mysql5.7 gruop by报错this is incompatible with sql_mode=only_full_group_by

解析:在mysql 工具 搜索或者插入数据时报下面错误:ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
2019-12-03

mysql ONLY_FULL_GROUP_BY设置sql_mode无效排查问题(windows)

目录mysql ONLY_FULL_GROUP_BY设置sql_mode无效排查1.查询SQLMODE2.临时修改sql-mode执行SQL3.永久修改sql-mode总结mysql ONLY_FULLjs_GROUP_BY设置sql_mo
mysql ONLY_FULL_GROUP_BY设置sql_mode无效排查问题(windows)
2024-09-07

MySQL报错:sql_mode=only_full_group_by的4种轻松解决方法(含举例)

目录前言​方法一:直接修改数据库配置方法二:修改数据库配置(永js久生效)方法三:使用 any_value() 或 group_concat()方法四:开动脑筋,修改代码总结前言​作为初学者,我们在使用mysql的时候总是会遇到各种各样的
2023-01-12

mysql 设置@@sql_mode 解决查询非分组里字段报错问题

1 查询sql_mode SELECT @@sql_mode; 2 把查询的值复制黏贴,去掉ONLY_FULL_GROUP_BY,重新设置值 SET @@sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO
2016-06-27

如何解决mybatis批量更新出现SQL报错问题

这篇文章主要介绍如何解决mybatis批量更新出现SQL报错问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、问题重现1.配置文件spring: #DataSource数据源 datasource: u
2023-06-29

Navicat连接mysql报错问题

目录Navicat连接mysql报错解决方法总结Navicat连接mysql报错当我们用Navicat 连接数据库的时候,可能会遇到这个问题 :这个问题主要是python因为 5 和 8 的加密方式不一样,才导致报错!解决方法1、编程
Navicat连接mysql报错问题
2024-09-08

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver报错问题分析

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 这个错误通常意味着应用程序服务器在尝试在只读模式下访问数据库时出现了问题,该错误与事务处理有关。通常出现在JDBC连
2023-08-19

编程热搜

目录