MySQL报错:sql_mode=only_full_group_by解决方法

Linux环境

ubuntu 22.04 MySQL是8.0.35版本

问题描述

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'auth_system.t_class_temp_config.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

问题分析

这个错误是由于 MySQL 数据库的 SQL 模式中启用了 only_full_group_by,它要求在使用 GROUP BY 语句时,SELECT 中的字段必须要么包含在 GROUP BY 子句中,要么是聚合函数的参数。在查询中,SELECT 中的字段不符合这个规则,导致了错误的出现。

因为在MySQL 5.7后,MySQL默认开启了SQL_MODE严格模式,对数据进行严格校验。如果代码中含有group by聚合操作,那么select中的列,除了使用聚合函数之外的,如max()、min()等,都必须出现在group by中。

举例说明:

错误示范:

select Chengdu,Shanghai from city group by Chengdu

正确示范:

select Chengdu,Shanghai from city group by Chengdu,Shanghai

解决方法

方案一:更改数据库配置

1.在Linux环境先登录MySQL
2.在MySQL中输入如下命令进行查看
select @@global.sql_mode;

可以发现MySQL的sql_mode是开启了ONLY_FULL_GROUP_NY。

说明:解释sql_mode的含义

(1)ONLY_FULL_GROUP_NY

        含义:启用这个模式后,MySQL 在执行 GROUP BY 操作时,要求 SELECT 语句中的列必须是 GROUP BY 子句中的分组列或者包含在聚合函数中。换句话说,要求 SELECT 中的非聚合列必须在 GROUP BY 子句中出现。

        作用:这个模式的作用是增强 SQL 查询语句的严格性,避免因数据未正确分组而导致结果不确定性的情况发生。通过强制要求所有非聚合列都在 GROUP BY 子句中列出,确保了查询结果的准确性和一致性

(2)STRICT_TRANS_TABLES

        含义:当启用这个模式时,MySQL 会对事务中的数据插入和更新进行严格的类型检查,确保数据的准确性和完整性。

        作用:在插入或更新数据时,如果发生类型不匹配或者值超出范围等问题,将会产生错误,确保了数据的一致性。

(3)NO_ZERO_IN_DATE

        含义:禁止在日期中使用 '0000-00-00' 或 '0000-00-00 00:00:00' 这样的值。

        作用:当启用这个模式时,MySQL 会禁止插入或更新日期字段为零值,以避免不合法的日期值的存储。

(4)NO_ZERO_DATE

        含义:禁止在日期中使用 '0000-00-00' 这样的值。

        作用:与 NO_ZERO_IN_DATE 类似,这个模式也是为了避免不合法的日期值的存储。

(5)ERROR_FOR_DIVISION_BY_ZERO

         含义:当启用这个模式时,MySQL 在发生除零错误时将产生一个错误,而不是返回 NULL 或者一个警告。

         作用:这个模式确保了在执行除法操作时,避免了由于除零而导致的意外结果,提高了数据计算的准确性。

(6)NO_ENGINE_SUBSTITUTION

         含义:如果指定的存储引擎不可用,将不会自动替换为默认的存储引擎。

         作用:这个模式要求所指定的存储引擎必须可用,如果不可用,则会产生错误,确保了使用正确的存储引擎。

3.重新设置sql_mode

即把ONLY_FULL_GROUP_NY.去除,其他不变即可。

SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

这个方案有个缺点就是重启数据库之后,配置会失效。

方案二:更改数据库配置(永久生效)

找到MySQL安装时的配置文件my.cnf,在mysqld下添加如下配置即可。

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

保存并退出。重启MySQL即可生效。

验证

 方案三:调整sql语句

根据您的实际需求,可以修改查询语句,确保 SELECT 中的字段要么包含在 GROUP BY 子句中,要么作为聚合函数的参数。例如:

SELECT id, MAX(column_name) FROM your_table GROUP BY id;

方案四:临时表

在子查询中使用临时表,以避免直接在主查询中使用 GROUP BY。这种方法可能需要对查询进行重新设计,但可以绕过 only_full_group_by 的限制。

参考:MySQL报错:sql_mode=only_full_group_by 4种解决方法含举例,轻松解决ONLY_FULL_GROUP_BY的报错问题-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Delphi之后的接班人?国产可视化编程工具重塑经典

Delphi,这个名字对于许多80后的程序员来说,无疑是一种深深的情怀。它曾是可视化编程的王者,承载着无数开发者的青春记忆。 在Pascal语言盛行的年代,Delphi以其独特的魅力,迅速在编程界崭露头角。当时流传着这样一句话&…

Java实现公司货物订单管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

开启数字内容创作的新时代

目录 技术解析 未来展望 技术解析 Sora是一款由OpenAI开发的先进AI视频模型,其技术架构基于深度学习和自然语言处理技术。该模型的核心算法原理包括使用深度神经网络进行视频内容的理解、生成和互动。 在技术架构方面,Sora采用了一种混合的神经网络结…

架构设计:流式处理与实时计算

引言 随着大数据技术的不断发展,流式处理和实时计算在各行各业中变得越来越重要。那么什么是流式处理呢?我们又该怎么使用它?流式处理允许我们对数据流进行实时分析和处理,而实时计算则使我们能够以低延迟和高吞吐量处理数据。本…

【MySQL高可用集群】MySQL的MGR搭建

前情提要: MySQL官方在 5.7.17版本正式推出组复制(MySQL Group Replication,简称MGR),使用类似 zookeeper 的多于一半原则。在一个集群由 2N1 个节点共同组成一个复制组,一个事务的提交,必须经过…

蛋白结构预测模型评价指标

欢迎浏览我的CSND博客! Blockbuater_drug …点击进入 文章目录 前言一、蛋白结构预测模型评价指标TM-scorelDDT 二、Alphafold中的评价指标pLDDTpTMPAE 三、AlphaFold-multimer 蛋白结构的评价指标DockQipTM 总结参考资料 前言 本文汇总了AlphaFold和AlphaFold-mul…

tigramite教程(二)生物地球科学案例研究

文章目录 数据生成与绘图因果发现分析平稳性假设、确定性、潜在混杂因素结构假设参数假设使用PCMCIplus的滑动窗口分析聚合因果图非参数因果效应估计假设的图形和调整集干预的真实情况假设的参数模型和因果效应的估计使用关于图的不同假设进行估计非因果估计项目地址 这个文件…

LeetCode_Java_动态规划(2)(题目+思路+代码)

131.分割回文串 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s "aab" 输出:[["a&qu…

ActiveMq PUT任意文件上传漏洞(CVE-2016-3088)漏洞复现

ActiveMQ ActiveMQ Web控制台分为三个应用程序:其中admin,api和fileserver,其中admin是管理员页面,api是界面,fileserver是用于存储文件的界面;admin和api需要先登录才能使用,fileserver不需要…

智慧餐饮系统架构的设计与实现

随着科技的不断发展,智慧餐饮系统在餐饮行业中扮演着越来越重要的角色。智慧餐饮系统整合了信息技术,以提高餐饮企业的管理效率、客户服务质量和市场竞争力。本文将探讨智慧餐饮系统架构的设计与实现,并探讨其在餐饮行业中的应用前景。 架构…

matlab采用不同数值方法求解微分方程

1、内容简介 略 60-可以交流、咨询、答疑 欧拉方法、改进欧拉、RK4、米尔斯坦方法求解微分方程 2、内容说明 略 lc; close all; clear all; % 参数赋值 global a global b global h a 1; b 2; Ni 1000; % 总步数 h 0.001; % 步长Xt1(1:Ni) 0; Xt2(…

【前端素材】推荐优质后台管理系统PORTAL平台模板(附源码)

一、需求分析 后台管理系统是一种具有多层次结构的软件系统,用于管理网站、应用程序或系统的后台操作和管理。下面是对后台管理系统的分层次、详细分析: 第一层:用户界面层 登录界面:提供用户登录验证,确保只有经过授…

MySQL 数据优化技巧:提升百万级数据聚合统计速度

MySQL 数据优化技巧:提升百万级数据聚合统计速度 MySQL 数据优化技巧:提升百万级数据聚合统计速度摘要引言索引优化1. 使用合适的索引类型2. 聚簇索引的应用 查询优化3. 减少数据检索范围4. 避免全表扫描 数据库设计优化5. 合理划分数据表6. 使用分区表 …

零基础学Python入门教程非常详细(从小白到高级),入门必看

目录:基础 第一章-第五章(5.1-5.4):简介、配置与基础知识 第六章:判断语句 第一章:Python的概述 1.1:什么是Python? Python它是一种直译式,面向对象,解释式的脚本语…

NASA Earthdata wget批量下载

1 wegt下载 GNU Wget 1.21.4 for Windows (eternallybored.org) 2 创建your .urs_cookies and .dodsrc文件 只需要创建.urs_cookies文件 其实,通过txt可以直接创建 这个文件你想放到哪里,就放到哪里 Create .urs_cookies file: On Mac/Linux: cd ~ o…

绝对路径拼接漏洞 [NISACTF 2022]babyupload

打开题目 最开始以为是文件上传的漏洞 结果发现无论我们上传什么文件都会显示bad filename 去网上看了大佬的wp知道 我们直接去看源代码得到提示 /source 那我们去访问一下这个路径看看 得到一个下载文件 用记事本打开得到 源代码如下 from flask import Flask, request, r…

软考46-上午题-【数据库】-数据查询语言DQL1

一、SQL数据查询功能 SELECT语句的语法如下: 【注意】: 使用DISTINCT选项可以去重; form子句中出现多个基本表或视图时,系统首先执行笛卡尔积操作。 下面的查询示例均以这些表为基础 1-1、投影查询-SELECT 【回顾】:…

设计模式(七)装饰模式

相关文章设计模式系列 1.装饰模式简介 装饰模式介绍 装饰模式是结构型设计模式之一,不必改变类文件和使用继承的情况下,动态地扩展一个对象的功能,是继承的替代方案之一。它是通过创建一个包装对象,也就是装饰来包裹真实的对象…

【日常聊聊】Sora- 探索AI视频模型的无限可能

🍎个人博客:个人主页 🏆个人专栏:日常聊聊 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 方向一:技术解析 方向二:应用场景 方向三:未来展望 方向四:伦理与创意 方向…

[linux][异常检测] hung task, soft lockup, hard lockup, workqueue stall

hung task,soft lockup,hard lockup,workqueue stall 是 linux 内核中的异常检测机制,这 4 个检测均是通过时间维度上的检测来判断异常。 在时间维度上的检测机制,有两个核心的点: (1&#xff…