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

MySQL:SELECT list is not in GROUP BY clause 报错 解决方案

一、前言

一大早上测试环境,发现测试环境的MySQL报错了。

SELECT list is not in GROUP BY clause and contains nonaggregated column

二、解决方案

官方文档中提到:
在这里插入图片描述

大致意思:
用于GROUP BY的SQL / 92标准要求满足以下条件:

  • SELECT子句的表达式中使用的列必须在GROUP BY子句中。否则,使用该列的表达式是一个聚合函数。
  • GROUP BY表达式只能包含选择列表中的列名,而不能仅用作向量聚合的参数。
  1. 首先执行以下查询:
    不出所料就是有一个ONLY_FULL_GROUP_BY
SELECT @@sql_mode;ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

所以我去到配置文件中,在 mysqld 下配置一下 sql_mode,把 ONLY_FULL_GROUP_BY 去掉

# 添加的行如下
sql_model=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

重启MySQL即可!

可以参考我之前写的一篇文章了解sql_mode中的每个项的意思:点此跳转链接

三、起因分析

起因是昨天修改一个数据表的结构保存失败出现了报错:

1812 - Tablespace is missing for table database/crm_bid_deposit.

这个错误导致我删除表也删不掉,备份数据库也不行,烦死了。
然后翻遍谷歌,
我做了以下尝试:

  1. 删除MySQL data目录下对应表的 .ibd 文件,重启MySQL,再去Navicat那边删除对应的表,失败!
  2. 修改配置项innodb_file_per_table=0,重启,执行过以下命令,失败
SET FOREIGN_KEY_CHECKS=0;
ALTER TABLE wk_crm_table.wk_crm_bid_deposit DISCARD TABLESPACE;
ALTER TABLE wk_crm_table.wk_crm_bid_deposit IMPORT TABLESPACE;REPAIR TABLE wk_crm_bid_deposit;

无论我怎么操作,Navicat那边还是看到那个数据表
无奈只能先把 innodb_file_per_table=1 设置回来了,重启之后没检查,只看了Navicat中操作的表都没问题,没注意看web应用程序查询是否正常。所以早上来了才发现标题中提到的这个错误。

我这个 Tablespace is missing for table database/crm_bid_deposit. 错误看来只能是等周末再一个个表导出来重建数据库了。有没有人有解决方案,救救我~

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

相关文章:

  • IPython的使用技巧
  • Spring Boot 多线程例子
  • java干货 线程池的分析和使用
  • 文本张量入门
  • js文字如何轮播?
  • Linux 五种IO模型
  • 深度解析响应式异步编程模型
  • 一个软件是如何开发出来的呢?
  • 宝塔板面有哪些优势
  • Mybatis中BaseEntity作用
  • IDEA2023中使用run Dashboard面板?实现批量运行微服务
  • 分数受限,鱼和熊掌如何兼得?专业or学校,这样选最明智!
  • CentOS 8.5 - 配置ssh的免密登录
  • 反转链表(java精简版)
  • QPair使用详解
  • C# 语言在AGI 赛道上能做什么
  • 微信小程序-API 本地存储
  • TensorFlow音频分类修复
  • C#学习系列之ListView垂直滚动
  • MySQL 常用函数总结
  • SpingBoot快速入门下
  • 什么是symbol?
  • Tailwind CSS 响应式设计实战指南
  • 如何把模糊的图片修复变清晰,怎么做?有那些方法?
  • 思科路由器密码恢复方法
  • HTML某联招聘
  • 第一百一十六节 Java 面向对象设计 - Java 终止块
  • YOLOv10改进 | 注意力篇 | YOLOv10引入YOLO-Face提出的SEAM注意力机制优化物体遮挡检测
  • 问题解决:Problem exceeding maximum token in azure openai (with java)
  • eNSP学习——OSPF在帧中继网络中的配置