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

mysql8.0 sql_mode与ONLY_FULL_GROUP_BY报错

如果你的项目出现如下类似的错误

### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column '字段名' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by ### The error may exist in class path resource [xml文件路径] ### The error may involve 查询方法名 ### The error occurred while setting parameters ###

大概率是因为你的程序是在mysql5.7以下版本开发的,但是迁移到了更高版本的mysql运行,更高版本的mysql在分组时会要求分组的字段必须位于select 所查询的字段列表中,此时你有两种选择:

1.更改你的查询语句.

2.更改数据库的查询限制策略.

以Windows版本的mysql8.0为例,我们通过以下查询语句可以查询mysql的当前限制策略:

SELECT @@GLOBAL.sql_mode;

可以看到返回值是

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

通过sql的方式替换掉ONLY_FULL_GROUP_BY字段并不见效

网络上大部分的建议是更改sql_mode,以下是示例

首先,找到mysql8.0 my.ini默认的配置文件路径,Windows在

C:\ProgramData\MySQL\MySQL Server 8.0\ 目录下,然后修改为如下配置

[mysqld]  
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

对于有些版本,重启后再次查询,发现ONLY_FULL_GROUP_BY限制已经去除,但有些版本还是无效的,原因在于,在一些新版本的Mysql里,数据库的限制策略关键字已经不叫sql_mode,而叫

sql-mode

此时,查看配置文件的大约120行左右,你会看到:

sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

问题就出在这里,把上面配置里的ONLY_FULL_GROUP_BY连同后面的逗号去掉就可以了.

重启mysql,故障解决.

如果快速帮你定位并解决到了问题,记得点赞收藏哦.

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《广告数据定量分析》核心内容——搜索广告投放优化方法
  • 湖州等保测评公司有几家?在那里?电话多少?
  • mtk镜像签名
  • 13600KF+3060Ti,虚拟机安装macOS 14,2024年6月
  • java算法:快速排序
  • 车载网络安全指南 概述(一)
  • PHP实名认证接口开发示例、银行卡实名认证API
  • C语言| 编程获取数组的长度
  • Ubuntu Server 20.04挂载磁盘
  • STM32的FreeRtos的学习
  • Spring Web MVC之过滤器Filter和拦截器HandlerInterceptor的区别和用法
  • Python第二语言(十、Python面向对象(上))
  • Java 类加载器与加载机制
  • 详解 Flink Table API 和 Flink SQL 之函数
  • 计算机网络(3) 字节顺序:网络字节序与IPv4
  • CSS 三角实现
  • Javascript设计模式学习之Observer(观察者)模式
  • LeetCode18.四数之和 JavaScript
  • LeetCode29.两数相除 JavaScript
  • Sass 快速入门教程
  • 初探 Vue 生命周期和钩子函数
  • 给第三方使用接口的 URL 签名实现
  • 和 || 运算
  • 基于组件的设计工作流与界面抽象
  • 老板让我十分钟上手nx-admin
  • 免费小说阅读小程序
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 三分钟教你同步 Visual Studio Code 设置
  • 数组的操作
  • 学习Vue.js的五个小例子
  • 自动记录MySQL慢查询快照脚本
  • gunicorn工作原理
  • 国内开源镜像站点
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​VRRP 虚拟路由冗余协议(华为)
  • # wps必须要登录激活才能使用吗?
  • #laravel 通过手动安装依赖PHPExcel#
  • (+4)2.2UML建模图
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (备份) esp32 GPIO
  • (多级缓存)缓存同步
  • (附源码)springboot教学评价 毕业设计 641310
  • (一)Linux+Windows下安装ffmpeg
  • (一)Thymeleaf用法——Thymeleaf简介
  • (译)计算距离、方位和更多经纬度之间的点
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • .Net 执行Linux下多行shell命令方法
  • .NET 直连SAP HANA数据库
  • .net2005怎么读string形的xml,不是xml文件。
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net中ListT 泛型转成DataTable、DataSet
  • @EnableAsync和@Async开始异步任务支持