惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 司徒正美
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
美团技术团队
WordPress大学
WordPress大学
罗磊的独立博客
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
MongoDB | Blog
MongoDB | Blog
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
H
Help Net Security
S
SegmentFault 最新的问题
C
Check Point Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
腾讯CDC
Engineering at Meta
Engineering at Meta
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
D
DataBreaches.Net
雷峰网
雷峰网
GbyAI
GbyAI
宝玉的分享
宝玉的分享

博客园 - 代码猫

Spring boot 打成jar包,并运行jar包。 MySQL中两个DateTime字段相减,得到秒,分,天数 mybatis中大于等于小于等于的写法 Spring boot 自定义注解,Java通过反射获取注解,及注解的说明,附源码下载! Spring boot 自定义注解+@Aspect实现切面输出日志,附源码下载! HTML5 Canvas基础教程 SpringBoot+Jpa动态切换多数据源配置及实现 MySQL使用DATE_FORMAT()函数格式化日期 Java List转String数组与String数组转List MySQL使用IF函数来动态执行where条件 JPA忽略实体类某属性,不持久化某字段的解决方法 git 常用命令 Windows系统CMD窗口下,MySQL建库、还原数据库命令操作示例 Java JPA 报java.lang.IllegalArgumentException: Validation failed for query for method public abstract ...异常的一种原因和解决办法 Java8使用实现Runnable接口方式创建新线程的方法 windows查看端口被占用情况 Windows环境下设置Tomcat8以服务的形式运行,不再打开Tomcat窗口 MySql添加字段命令 Java中String、LocalDateTime、LocalDate、Date互转
MySQL 5.7 执行SQL报错:1055 - Expression #3 of SELECT lis...
代码猫 · 2019-12-25 · via 博客园 - 代码猫

背景

项目中的MySQL服务器一直使用的公司内网测试服务器,前几天内网测试服务器出问题了,MySQL挂了不能提供服务,所以在本机安装了MySQL5.7.20版本(通过解压官网下载的压缩包并使用命令来安装的方式)。

项目跑起来,有些功能使用不了,查了原因,是因为执行下面的SQL报异常了:

SELECT
    rd.EQU_CD AS EQUCD,
    rd.EQU_TYPE AS EQUTYPE,
    DATE_FORMAT( rd.TM, '%Y-%m-%d' ) AS tm,
    sum( rd.ACCW ) ACCW 
FROM
    t_receivedata rd
    INNER JOIN ( SELECT ENG_MAN_CD, EQU_CD, EQU_TYPE FROM t_monitor GROUP BY ENG_MAN_CD, EQU_CD ) mt ON rd.EQU_CD = mt.EQU_CD 
WHERE
    mt.ENG_MAN_CD IS NOT NULL 
    AND mt.EQU_TYPE IS NOT NULL 
    AND YEAR ( rd.TM ) = 2019 
    AND MONTH ( rd.TM ) = 12 
GROUP BY
    DATE_FORMAT( rd.TM, '%Y-%m-%d' ),
    rd.EQU_TYPE 
ORDER BY
    TM ASC;

异常信息如下:

1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column

原因

MySQL 5.7.5 及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL 模式(默认情况下),MySQL将拒绝选择列表,HAVING 条件或 ORDER BY 列表的查询引用在 GROUP BY 子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,

MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。)

解决

以Windows操作系统为例,编辑 MySQL配置文件 my.ini,在尾部添加以下内容,重新启动 MySQL 即可:

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

注意:如果你的my.ini文件中已经存在[mysqld]这行,就无需再添加了,只需要在[mysqld]下面添加sql_mode...这一行就行了。

参考

https://blog.csdn.net/yuanlaijike/article/details/87926596