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

【Mysql】系统服务启动访问报错问题处理:this is incompatible with sql_mode=only_full_group_by

一、背景:

本来已经正常运行的平台,突然有一天由于对服务器进行部分操作迁移,发现jar可以正常启动,但是访问功能一直报错,监控后台日志后,发现了问题:

报错的具体信息如下:

Caused by: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'frae.p.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

二、问题分析:

通过对问题的查找分析,字面意思理解:

SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列“grades.order_id” 它在功能上不依赖于
GROUP BY 子句中的列; 这与 sql_mode=only_full_group_by 不兼容

使用GROUP BY 语句违背了sql_mode=only_full_group_by。因为mysql版本5.7之后默认的模式是ONLY_FULL_GROUP_BY

查看官方文档,发现从 MySQL 5.7.5 开始,默认 SQL 模式包括 ONLY_FULL_GROUP_BY。 (在 5.7.5 之前,MySQL 不检测函数依赖,并且默认不启用 ONLY_FULL_GROUP_BY。)这可能会导致一些sql语句失效。

三、处理方法:

方法一:

MySQL查询、设置配置:

  1. 查看参数:SHOW VARIABLES WHERE variable_name like '%sql_mode%';

  2. 设置参数:SET GLOBAL sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

  3. 刷新配置:flush privileges;

 flush privileges;

 按照步骤一理论上就可以解决该问题

方法二:

通过更改my.cnf实现。本质上和2是一样的,都是关闭ONLY_FULL_GROUP_BY模式

我是通过yum安装的,安装手册在这里,需要的朋友可以用,传送门:超详细的yum方式安装mysql_yum在线安装mysql-CSDN博客

如果my.cnf中有sql_mode配置,则将ONLY_FULL_GROUP_BY去掉。

如果没有,直接编辑 /etc/my.cnf,在文件的最后加上:

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

然后重启数据库即可:

systemctl restart mysqld.service

然后可以看配置,已经更新为更改后的内容,然后就可以愉快的使用了

 

本文推荐使用方法二 

https://www.jb51.net/article/251380.htm

http://www.lryc.cn/news/434496.html

相关文章:

  • 安装oh-my-zsh后报错zsh: command not found: conda问题解决
  • 避免 PyCharm 将该 Python 脚本作为测试运行
  • 【Sqlite】.NET Framework使用Sqlite的注意事项
  • 2024下《系统集成项目管理工程师》50个高频考点汇总!值得收藏
  • Java 远程调用接口(RMI)
  • torch.squeeze()
  • COD论文笔记 BiRefNet
  • 表单项标签简单学习
  • 固态硬盘和机械硬盘区别?固态硬盘和机械硬盘哪个好?
  • QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]
  • 亚信安全全球云安全SaaS运营总部落地厦门 安全点亮一带一路
  • 在cmd中输入mysql无法运行(环境变量配置保姆级教程)
  • 在Webmin上默认状态无法正常显示 Mariadb V11.02及以上版本
  • C和指针:预处理(#include/define/if...)
  • 【Java数据结构】泛型的进阶部分(泛型通配符)
  • 大模型实战一、Ollama+RagFlow 部署本地知识库
  • 系统工程建模MBSE
  • SVN的使用技巧
  • 使用 RabbitMQ 实现秒杀订单系统的异步消息处理
  • oracle19.3单机升级到Oracle19.22
  • 半导体的发展--创世新产品介绍
  • Ubuntu WSL使用技巧
  • 4 个步骤带你快速上手 Einstein Copilot for Tableau
  • C++ | Leetcode C++题解之第386题字典序排数
  • vsftpd配置用户和密码让其他客户端连接
  • Oracle使用序列后提示违反唯一约束---解决办法
  • 乐观锁悲观锁
  • Unity面试:什么是UnityEvent?
  • 食品安全管理员考试真题题库及答案
  • 【C++】—— vector 的模拟实现