当前位置: 首页 > news >正文

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博客

相关文章:

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 inco…...

SQL表连接方式

一、SQL中的表连接方式: 内连接(INNER JOIN):返回两个表中符合连接条件的交集。外连接(OUTER JOIN): 左外连接(LEFT JOIN):返回左表中所有记录,以…...

5 原型模式 Prototype

1.模式定义: 指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 2.应用场景: 当代码不应该依赖于需要复制的对象的具体类时,请使用Prototype模式。 Spring源码中的应用 org.springframework.beans.factory.support.AbstractB…...

springboot java 项目连接es

springboot java 项目连接es 介绍 小项目,没有引用es客户端,直接使用的http的方式进行连接的,方式比较简单,但是依赖较少,一个比较小的项目,部署方便 业务也很简单就是把数据库中的数据读到es中&#xf…...

MySQL学习笔记3: MySQL数据库基础

目录 前言目标数据库操作(针对database 的操作)1. 创建数据库 create database 数据库名;2. 查看数据库 show databases;3. 选中数据库 use 数据库名;4. 删除数据库 drop database 数据库名; mysql中支持的数据类型1. 数值类型: NUMERIC(M,D)2. 字符串类…...

GB/T 17640-2023 长丝机织土工布检测

长丝机织土工布是指以合成纤维长丝为原料织制而成的土工布,按纤维品种分为涤纶、丙纶、锦纶 等长丝机织土工布;按用途分为反滤布、复合用基布、管袋布、模袋布等。 GB/T 17640-2023 长丝机织土工布测试项目: 测试要求 测试标准 经向抗拉强…...

MedicalGPT 训练医疗大模型,实现了包括增量预训练、有监督微调、RLHF(奖励建模、强化学习训练)和DPO(直接偏好优化)

MedicalGPT 训练医疗大模型,实现了包括增量预训练、有监督微调、RLHF(奖励建模、强化学习训练)和DPO(直接偏好优化)。 MedicalGPT: Training Your Own Medical GPT Model with ChatGPT Training Pipeline. 训练医疗大模型,实现了包括增量预训练、有监督微…...

UE4 C++联网RPC教程笔记(一)(第1~4集)

UE4 C联网RPC教程笔记(一)(第1~4集) 前言1. 教程介绍与资源2. 自定义 Debug 功能3. Actor 的复制4. 联网状态判断 前言 本系列笔记将会对梁迪老师的《UE4C联网RPC框架开发吃鸡》教程进行个人的知识点梳理与总结,此课程…...

备战蓝桥杯 Day11(滚动数组优化+完全背包)

01背包的滚动数组优化 【题目描述】 经典0—1背包问题,有n个物品,编号为i的物品的重量为w[i],价值为c[i],现在要从这些物品中选一些物品装到一个容量为m的背包中,使得背包内物体在总重量不超过m的前提下价值尽量大。 #include&…...

Java SE 入门到精通—4.抽象类与接口【Java】

抽象类 同接口一样,用来约束子类,限制子类必须拥有某些方法,比普通类多了个抽象方法,用抽象方法该类必为抽象类 概念 没有具体的对象,具体的方法的一个类 abstract关键字声明为抽象类/方法 一个类中有抽象方法则该…...

Python 开发转 Java 简易路线 - 更新中

有了 Python 开发基础,Java 的内容都可以快速过一遍,复杂地方跟着写一遍。 一、基础 1、Java 基础:尚硅谷 - Java基础 全部快速过一遍, 2、数据库:略。 着重 mysql 高级部分(针对面试)&…...

Python编程语言学习

1.Python 特点 Python是一种简单、易读、易学和高效的编程语言,具有以下特点: 简单易学:Python采用清晰简洁的语法,注重代码的可读性和可维护性,使得初学者能够快速上手并编写出清晰的代码。 面向对象:Py…...

Cartographer框架简述

catographer框架分为前端和后端 前端包括雷达数据处理;位姿预测;扫描匹配和栅格地图更新。 后端包括后端:线程池任务与调度;向位姿图添加节点,计算节点的子图内约束和子图间约束(回环检测)&…...

适用于 Linux、Windows 和 macOS 的免费 ONLYOFFICE 桌面应用程序

前言: 最近也是发现了一款特别好用的免费ONLYOFFICE 桌面应用程序忍不住分享给大家,这款编辑器能够打开、阅读和编辑多种文件类型,包括.docx文档、.pptx幻灯片和.xlsx表格等开放XML格式的Office文档。此外,ONLYOFFICE桌面编辑器还…...

C++面向对象程序设计-北京大学-郭炜【课程笔记(四)】

C面向对象程序设计-北京大学-郭炜【课程笔记(四)】 1、this指针1.1、this指针的作用1.2、this指针和静态成员函数 2、静态成员变量和静态成员函数2.1、基本概念2.2、基本概念总结2.3、如何访问静态成员2.4、静态成员变量的使用场景(重要&…...

前端构建效率优化之路

项目背景 我们的系统(一个 ToB 的 Web 单页应用)前端单页应用经过多年的迭代,目前已经累积有大几十万行的业务代码,30 路由模块,整体的代码量和复杂度还是比较高的。 项目整体是基于 Vue TypeScirpt,而构…...

react实现拖拽的插件

插件一:dnd-kit 插件官网链接https://docs.dndkit.com/introduction/installation 插件二:react-beautiful-dnd https://github.com/atlassian/react-beautiful-dnd/tree/master 两个插件的区别: 插件一可以做到从区域A拖住到区域B 插件二…...

解决Uncaught SyntaxError: Cannot use import statement outside a module(at XXX)报错

报错原因:这个错误通常是因为你正在尝试在一个不支持 ES6 模块语法的环境中使用 import 语句。这可能是因为你的代码是在一个只支持 CommonJS 或 AMD 模块系统的环境中运行的,或者你的代码运行的环境没有正确配置以支持 ES6 模块。如果是在浏览器环境&am…...

PHP如何利用post与get方式传值接收数据

目录 一、POST传值1. 使用curl库发送 POST 请求:2. 使用file_get_contents()函数发送 POST 请求:3. 使用stream_socket_client()函数发送 POST 请求:4. 利用from表单提交数据: 二、GET传值1. 使用http_build_query()函数构建 URL …...

在Mac上搭建MongoDB环境

最近工作中需要装MongoDB环境,搭建过程中遇到了一些问题,在这里记录一下安装MongoDB环境的方法以及问题的解决方法。有两种安装MongoDB的方法:brew安装和手动安装。 目录 使用Homebrew安装MongoDB 手动安装MongoDB(不使用Homebr…...

Keil C51评估版SRC指令限制解析与解决方案

1. 问题现象与背景解析最近在调试一个基于8051架构的嵌入式项目时,遇到了一个令人困惑的编译错误。当我在Keil C51开发环境中使用SRC指令时,编译器突然报出致命错误(Fatal Error),但检查代码语法看起来完全正确。这个SRC指令是用来控制编译器…...

告别数据壁垒:用ArcGIS Editor for OSM插件,5分钟搞定OSM数据下载与本地编辑

告别数据壁垒:用ArcGIS Editor for OSM插件,5分钟搞定OSM数据下载与本地编辑 在空间数据分析领域,OpenStreetMap(OSM)作为开放的全球地理数据库,已成为许多GIS从业者的重要数据来源。然而,传统O…...

3步掌握Navicat无限试用重置:Mac用户的完整专业指南

3步掌握Navicat无限试用重置:Mac用户的完整专业指南 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为Navica…...

AzurLaneAutoScript:解放双手的碧蓝航线智能自动化脚本

AzurLaneAutoScript:解放双手的碧蓝航线智能自动化脚本 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为《…...

Agent+用药提醒:真正难的不是提醒,而是结合病情和依从性管理

用药提醒如果只做成定时推送,本质上接近一个带药品名称的闹钟。医疗健康应用里更棘手的问题是:用户是否按计划执行、漏服后如何记录、连续异常时是否需要升级提醒,以及这些规则如何被机构确认并可审计。本文只讨论技术架构和工程流程示例&…...

国自然最后冲刺:如何用ChatGPT把自查做到“零漏项”?

各位同仁好,我是七哥。一个在高校里从事人工智能相关领域研究,钻研用大模型AI实操的学术人。可以和七哥交流学术写作或Gemini、GPT、Claude等大模型学术实操相关问题,多多交流,相互成就,共同进步。 2026年是国自然改版元年,模板大变,旧套路失效,新坑又挖了不少。今天七…...

告别JNI内存泄漏:实战中那些容易踩坑的字符串与数组操作(附完整代码示例)

告别JNI内存泄漏:实战中那些容易踩坑的字符串与数组操作(附完整代码示例) 在Android NDK开发和高性能Java服务中,JNI(Java Native Interface)作为连接Java与C的桥梁,其重要性不言而喻。然而&…...

Agent+可穿戴设备:心率、睡眠、活动数据如何变成有价值的健康建议

可穿戴设备每天都会产生心率、睡眠、步数、活动强度等数据,但开发者真正要解决的不是“采集更多指标”,而是把这些指标转成可解释、可追踪、可配置的健康提示。本文从工程角度搭建一个简化版 Agent 服务,演示如何完成数据接入、趋势计算、规则…...

基于HalloWing的动态眼睛驯鹿面具制作:嵌入式系统与互动艺术的融合实践

1. 项目概述:当驯鹿面具“活”过来几年前我第一次在Maker Faire上看到那些会眨眼、会转动的电子眼睛道具时,就被深深吸引了。那种将静态面具赋予生命力的魔法,一直让我心痒痒。直到我遇到了Adafruit的HalloWing开发板,这个专为“眼…...

高性能Go Web框架Volo:设计原理、核心功能与生产实践

1. 项目概述:一个高性能的Go语言Web框架最近在折腾一个需要处理高并发请求的API服务,选型时又一次把目光投向了Go生态。说实话,Go的Web框架选择不少,从轻量级的Gin、Echo,到功能更全的Beego、Iris,各有各的…...