广告
返回顶部
首页 > 资讯 > 数据库 >SQL 报错 sql_mode=only_full_group_by 问题
  • 401
分享到

SQL 报错 sql_mode=only_full_group_by 问题

数据库mysqlsql 2023-08-21 08:08:53 401人浏览 八月长安
摘要

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

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

您可能感兴趣的文档:

--结束END--

本文标题: SQL 报错 sql_mode=only_full_group_by 问题

本文链接: https://www.lsjlt.com/news/376784.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作