In aggregated query without GROUP BY, expression #2 of SELECT list contains nonaggregated column...

ERROR 1140 (42000): In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column ‘mydb.student.sname’; this is incompatible with sql_mode=only_full_group_by

maven项目报错error:
expression #2 of SELECT list contains nonaggregated column ‘newhelp.appr.title’; this is incompatible with sql_mode=only_full_group_by

这是因为随着MySQL版本更新带来的问题,在MySQL5.7版本之后对group by进行了优化。他默认启动改进之后的

版本启动了ONLY_FULL_GROUP_BY模式。

这种模式的官方解释:ONLY_FULL_GROUP_BY是MySQL数据库提供的一个sql_mode,通过这个sql_mode来保证

SQL语句“分组求最值”合法性的检查。这种模式采用了与Oracle、DB2等数据库的处理方式。即不允许select target list

中出现语义不明确的列。

通俗的讲就是:对于用到GROUP BY的select语句,查出来的列必须是group by后面声明的列,或者是聚合函数里面的列

有这样一个数据库的表

select语句:select id, sum(appr_id) from appr group by id------------------------------------(合法)

select语句:select id, user_id, sum(appr_id) from appr group by id-------------------------(合法)

select语句:select id, sum(appr_id) from appr group by role----------------------------------(不合法)

select语句:select id, user_id, sum(appr_id) from appr group by role-----------------------(不合法)

select语句:select * from appr group by role-------------------------------------------------------(不合法)

经过大量测试:笔者发现了ONLY_FULL_GROUP_BY这种模式的特点:

1:只要有聚合函数sum(),count(),max(),avg()等函数就需要用到group by,否则就会报上面的错误。

2:group by id(id是主键)的时候,select什么都没有问题,包括有聚合函数。

3:group by role(非主键)的时候,select只能是聚合函数和role(group by的字段),否则报错

如果我们不想用用ONLY_FULL_GROUP_BY的模式。有两种解决这种问题的方案:

1:命令行中输入:

set @@GLOBAL.sql_mode=’’;

set sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION

_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;

不过这种情况治标不治本,一旦mysql重启之后又会恢复。

2:修改MySQL的配置文件,

1、windows下找到MySQL的安装目录的my.ini文件,修改其中的配置为不启动ONLY_FULL_GROUP_BY模式

删掉带有ONLY_FULL_GROUP_BY的模式就ok了,如果没有找到my.ini文件。

去系统的隐藏文件夹查看,在某个盘下输入%ProgramData%然后搜索MySQL的my.ini文件

2、linux下找到my.cnf文件,这个是配置MySQL的文件。一般这个文件是在etc文件夹下。

vi my.cnf 编辑这个文件,然后在图示的位置上加入sql_mode =

"STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FO

R_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"

然后重启MySQL服务:service mysqld restart

注意:服务重启之后不一定立即生效,尤其是你买的服务器,存在延时。所以可能等一两个小时才生效。

goodluck!
————————————————
版权声明:本文为CSDN博主「不坠青云之志」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43279637/article/details/84842189

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

又学MySQL

又学MySQL 一、数据库的基本操作 1.1、启动 net start mysql -- 启动1.2、断开 net stop mysql -- 断开1.3、连接 mysql -uroot -p -- 连接数据库 Enter password:******1.4、退出 exit -- 退出1.5、创建数据库 create database 数据库名;-- 例如,创建一个叫…

人工智能芯片龙头之一gti概念股_AI芯片相关股票有哪些?AI芯片概念股票龙头一览...

12月18日消息,AI芯片概念开盘报涨,华西股份(9.17,2.573%)领涨, 富瀚微(148,1.914%)、汇顶科技(155.43,1.06%)、华天科技(14.03,0.718%)、紫光股份(21,0.095%)等跟涨。那么&#xff0…

数据库错误 ERROR 1366 (HY000): Incorrect string value: ‘\xD4\xF8\xBB\xAA‘ for column ‘Sname‘ at row 1解决

数据库错误 ERROR 1366 (HY000): Incorrect string value: ‘\xD4\xF8\xBB\xAA’ for column ‘Sname’ at row 1解决 一.原因: 插入数据时有中文字符出现 二.解决方案 1.查看当前服务器状态 : status或者\s 2.修改数据库的默认编码方式 使用命令: alter database mydb ch…

python requests 状态码_requests获取所有状态码

requests获取所有状态码 requests默认是不会获取301/302的状态码的。可以设置allow_redirects=False,这样就可以获取所有的状态码了 import requests # url # url = http://www.freebuf.com/news/157100.html # 请求200,返回200 url = http://www.freebuf.com/fevents/133225…

【SpringBoot篇】解决缓存击穿问题② — 基于逻辑过期方式

🎊专栏【SpringBoot】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🎍什么是逻辑过期方式⭐思路🌹代码 &am…

Git使用手册--超级详细,自己都看哭了

Git 一.git简介 Git是目前世界上最先进的分布式版本控制系统(没有之一)。 关于版本控制系统: 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.有了它你就可以将选定的文件回溯到之前的状态,甚…

nodejs核心模块fs删除文件_用 NodeJS 重命名系统文件

作者:Nick Major翻译:疯狂的技术宅原文:https://coderrocketfuel.com/article/how-to-rename-a-system-file-using-node-js未经允许严禁转载介绍你是在 Node.js 中操作系统文件,并且需要一种简单的方法来以编程方式重命名文件&…

Java io流---拷贝目录

Java io流—拷贝目录 代码: package demo01;import java.io.File;public class CopyAll {public static void main(String[] args) {//拷贝源File srcFile new File("E:\\学习\\a");//拷贝目标File destFile new File("C:\\Users\\22721\\Desktop");//…

套口机跳针修理带图_套口机维修注意事项

套口机维修几点注意事项:首先要仔细检查、剖析套口机断线首要是什么缘由发生的断线。缝神总结以下几点与我们讨论:1、作业开端断线,即是说车工踏下踏板,刚开端缝就断了。缘由是榜首夹线器太紧了,留下的线头太短&#x…

Java io流---拷贝文件夹下的所有文件和目录

Java io流—拷贝文件夹下的所有文件和目录 代码: package demo01;import java.io.*; import java.util.TreeMap;public class CopyAll {public static void main(String[] args) {//拷贝源File srcFile new File("E:\\学习\\a");//拷贝目标File destFile new Fil…

k8s挂载目录_K8S中挂载目录引发的血案!

在kubernetes中部署前端项目(使用nginx作为服务器)的时候,遇到了一个报错,报错信息如下2019/11/19 02:16:31 [emerg] 1#1: open() "/etc/nginx/mime.types" failed (2: No such file or directory) in /etc/nginx/nginx.conf:14nginx: [emerg] open() "/etc/ngi…

[LeetCode] 1. 两数之和 (Java)

[LeetCode] 1. 两数之和 (Java) 1. 题目描述 力扣两数之和传送门 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff…

tcpsyn发生在哪层_必看面试题之计算机网络:来自一位拿到了腾讯和字节双offer的大佬...

有小伙伴反映上篇文不全面,深觉文笔有限,于是,给大家分享一篇牛客网面上了腾讯和字节跳动的大佬的计算机网络面试相关知识点的总结。

[LeetCode] 1108. IP 地址无效化 (Java)

[LeetCode] 1108. IP 地址无效化 (Java) 1. 题目描述 力扣传送门 给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。 所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。 示例 1: 输入:address “1…

移动端web设计尺寸_移动端H5页面的设计稿尺寸大小规范

当我们在做手机端H5网页设计稿时(当然包含微信端的H5网页设计),如果没有做过类似的移动端的设计,UI设计师和前端工程师肯定会纠结的。如果是app设计师,就不会那么纠结啦。那么多手机屏幕尺寸,设计稿应该按照哪一个尺寸作为标准尺寸…

[算法] 二叉树的DFS与BFS算法 (Java) -- 痛定思痛 彻底搞懂

二叉树的DFS与BFS算法 (Java) 1.概念 ①DFS (深度优先搜索) 维基百科读一遍 定义看完, 看一遍gif ②BFS (广度优先搜索) 维基百科读一遍 gif看一遍 2. 算法实现 二叉树节点结构: public class TreeNode {int value;TreeNode left;TreeNode right;public TreeNode(int…

mybatis返回map键值对_mybatis返回map key怎么指定

展开全部一、概述MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用,636f7079323131333532363134313032313635…

[LeetCode] 485.最大连续 1 的个数(Java)

[LeetCode] 485.最大连续 1 的个数(Java) 1.题目描述 力扣传送门 给定一个二进制数组 nums , 计算其中最大连续 1 的个数。 示例 1:输入:nums [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 &…

两个音轨合并_两个双音轨mkv视频合并保持原双音轨不变 MKV怎么合并视频,合并之后仍保留MKV的双音轨...

在写文之前先说明下,笔者在双音轨处理方面接触不久,也只算是半吊子,离砖家级别还有些距离滴,若有不足的地方,欢迎大家补充哈。今天突然想到mkv视频合并的问题,就是MKV怎么合并视频,合并之后要保…

[LeetCode] 495. 提莫攻击 (Java)

[LeetCode] 495. 提莫攻击 (Java) 1.题目描述 在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。 当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒…