MySql报错only_full_group_by的解决办法

深入理解MySQL中的ONLY_FULL_GROUP_BY 阅读详情

我在一个新环境里部署程序时遇到MySql报错only_full_group_by,之前已经遇到过一次同样的问题,当时没有总结经验,导致这次解决时耗费了不少时间,这里把本次的处理过程进行记录总结,同时分享给大家

MySql数据库报错如下,从字面意思理解是select后面查询的字段没有出现在group by中

 

 原来导致不符合mysql8.默认配置的

ONLY_FULL_GROUP_BY

  • ONLY_FULL_GROUP_BY

对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中

SELECT
            distinct score,radio_show,r.type as type
        FROM
            bbs_rank r, bbs_bank b, bbs_radio ra
        where r.id =b.rank_id and ra.rank_id= r.id  and  ra.type=#{period} and b.name = #{bankName}
          and ra.`year_month1`=#{year_mo} group by score

由于生产服务器不能改mysql的配置文件中的sql_mode. 只能修改sql。原来的没有写radio_show,r.type在group by 。又补充上了。这个一下子ok了。

  SELECT
            distinct score,radio_show,r.type as type
        FROM
            bbs_rank r, bbs_bank b, bbs_radio ra
        where r.id =b.rank_id and ra.rank_id= r.id  and  ra.type=#{period} and b.name = #{bankName}
          and ra.`year_month1`=#{year_mo} group by score,radio_show,r.type

如果修改sql比较多的。还是建议在mysql.conf添加一下配置sql_mode=

  • STRICT_TRANS_TABLES,
  • NO_ENGINE_SUBSTITUTION
[mysqld]
# skip-grant-tables
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_allowed_packet=32M
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

sql_mode常用值

  • ONLY_FULL_GROUP_BY

对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中

  • NO_AUTO_VALUE_ON_ZERO

该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。

  • STRICT_TRANS_TABLES

在该模式下,如果一个值不能插入到一个事务中,则中断当前的操作,对非事务表不做限制

  • NO_ZERO_IN_DATE

在严格模式下,不允许日期和月份为零

  • NO_ZERO_DATE

设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告

  • ERROR_FOR_DIVISION_BY_ZERO

在insert或update过程中,如果数据被零除,则产生错误而非警告。如果未给出该模式,那么数据被零除时Mysql返回NULL

  • NO_AUTO_CREATE_USER

禁止GRANT创建密码为空的用户

  • NO_ENGINE_SUBSTITUTION

如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

  • PIPES_AS_CONCAT

将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样是,也和字符串的拼接函数Concat想类似

  • ANSI_QUOTES

启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

MySQL中的only_full_group_by限制及解决方法 当启用only_full_group_by模式时,MySQL要求在SELECT语句中的GROUP BY子句中的列必须是聚合函数(如SUM、COUNT等)或在GROUP BY子句中出现的列。综上所述,only_full_group_by是MySQL中的一个限制,它要求在GROUP BY语句中的列必须是聚合函数或在GROUP BY子句中出现的列。需要注意的是,禁用only_full_group_by模式可能会导致查询结果的不准确性,因此在使用这种方法时需要谨慎,并确保查询结果的正确性。解决方法二:使用子查询。 阅读详情

相关推荐

整理的15个公开且可直接使用的电力视觉输电线路领域数据集

而巡检数据是目前来说影响我们做科研的最大阻碍,为此本内容主要总结了,现有的且公开免费的巡检数据集,供大家使用。STN PLAD数据集133个航拍图像,五个电力部件:电力塔及其塔的ID、绝缘子,防震锤,联板(yoke),图像的尺寸在5472×3648到5472×3078。IDID数据集:2000张图像,包含三个类别,正常绝缘子,破损绝缘子和闪络绝缘子三个类别,用于目标检测的实验。TTPLA数据集,用于实例分割,1100张尺寸为3840×2160,包含两个类别,电力杆塔和电力线。主要用于电力杆塔的目标检测。

weixin_42048361的博客 5011

MySQL报错:sql_mode=only_full_group_by 4种解决方法含举例,轻松解决ONLY_FULL_GROUP_BY的报错问题

MySQL报错:sql_mode=only_full_group_by 4种解决方法含举例,轻松解决ONLY_FULL_GROUP_BY的报错问题

qq118640594X的博客 10万+

淘晶驰串口屏自定义协议实战:5分钟搞定苹果时钟通信(附完整代码)

本文详细介绍了如何使用淘晶驰串口屏自定义通信协议快速实现苹果风格时钟的通信功能。通过精简的协议设计和完整的代码示例,开发者可以在5分钟内完成从硬件连接到软件实现的整个过程,适用于嵌入式开发中的高效通信需求。

weixin_29184371的博客 323

Mysql ONLY_FULL_GROUP_BY模式详解、group by非查询字段报错

一、问题报错 二、ONLY_FULL_GROUP_BY模式 2.1、什么是ONLY_FULL_GROUP_BY? 2.2、为什么要使用ONLY_FULL_GROUP_BY? 2.3、查看sql_mode 三、解决方法 3.1、关闭only_full_group_by模式 3.1.1、方法一:关闭当前会话中的only_full_group_by 3.1.2、方法二:永久关闭only_full_group_by模式 3.2、使用ANY_VALUE()函数 四、其他 4.1、无权限报错 4.2、select后面的

weixin_49114503的博客 1万+

Robocopy 参数进阶:/MIR 镜像同步与 /PURGE 删除操作的风险规避指南

本文深入解析Robocopy的/MIR镜像同步与/PURGE删除操作的高级用法及风险规避策略。通过实际案例和四重防护机制,指导用户安全实现目录同步,避免数据丢失风险,特别适用于远程主机间的数据复制与备份场景。

weixin_33462927的博客 356

5G NR LDPC码(2)—— 从基图到速率匹配:解码5G高速数据信道的标准化设计

本文深入解析了5G NR LDPC码的标准化设计流程。从作为核心骨架的基图(BG1/BG2)出发,详细阐述了其如何通过扩展因子Z灵活生成实际校验矩阵,并协同传输块大小计算与分段策略。文章重点剖析了基于循环缓存和冗余版本的速率匹配机制,以及其如何高效支撑增量冗余混合自动重传请求,从而确保5G高速数据信道在复杂环境下的可靠与高效传输。

weixin_29206669的博客 271

真正有效解决ONLY_FULL_GROUP_BY的问题

有效解决ONLY_FULL_GROUP_BY的问题 问题描述 报错 如上图 在mysql 5.7版本下可能会报如下错误 Error Code: 1055. Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘×××’ which is not functionally......

索隆有几把刀的博客 10万+

无人机多旋翼倾转动力测试系统-适用于(eVTOL开发、缩比模型测试、科研教育)

LY-QZ-F4多旋翼倾转动力测试系统是全球首款专为倾转四旋翼设计的多自由度动力测试平台,融合高精度传感、动态倾转模拟与智能工况分析,为下一代eVTOL技术提供全维度验证工具。采用航空级应变传感器(精度±0.1% FS),同步捕获推力、扭矩、俯仰/滚转力矩,动态误差<1%。同时测试电驱动系统(单轴最大150kW)与混合动力单元(增程式),支持高压(800V)平台。通过MET数据采集软件,控制采集一体化,定制化,实时观察上百个传感器数据,实时更改测试需求。可搭配六维姿态平台,温湿度舱、振动台等环境模拟设备。

weixin_49209795的博客 874

mysql报错only_full_group_by的解决办法

2. 关闭only_full_group_by的规则校验,关闭规则校验需要执行如下sql。以下两个sql单引号中的内容是第一步查询的结果去掉“,ONLY_FULL_GROUP_BY”之后的值。MySql从5.7版本开始默认开启only_full_group_by规则,规则核心原则如下,没有遵循原则的sql会被认为是不合法的sql。第一种方式适用于sql比较少的情况,如果程序中有大量的sql没有遵循only_full_group_by规则,这种方式修改起来会很浪费时间。不出现在group by中。

m0_73889884的博客 1729

MATLAB去雾算法实战:5种经典方法对比+1种改进方案(附完整源码)

本文详细对比了MATLAB中5种经典去雾算法(包括暗通道先验、多尺度Retinex等)的实现效果,并提出一种创新的自适应融合改进方案。通过完整的源码展示和性能对比,帮助开发者掌握图像去雾的核心技术,提升计算机视觉应用中的图像质量。特别针对去雾算法中的光晕效应问题,给出了工程实践中的优化技巧。

weixin_26801149的博客 412

MOSFET雪崩特性参数解析

但是,一些电源在输出短路时,初级中会产生较大的电流,加上初级电感,器件就会有雪崩损坏的可能,因此在这样的应用条件下,就要考虑器件的雪崩能量。对于那些在MOSFET的D和S极产生较大电压的尖峰应用,就要考虑器件的雪崩能量,电压的尖峰所集中的能量主要由电感和电流所决定,因此对于反激的应用,MOSFET关断时会产生较大的电压尖峰。雪崩击穿能量标定了器件可以容忍的瞬时过冲电压的安全值,其依赖于雪崩击穿需要消散的能量。EAS单脉冲雪崩击穿能量, EAS标定了器件可以安全吸收反向雪崩击穿能量的高低。

Airer_00的博客 806

mysql8及以上only_full_group_by报错及解决办法

问题复现: 执行查询SQL:SELECT * FROM employees GROUP BY department_id 出现这个报错的原因是,在mysql8及以上默认使用sql_mode=only_full_group_by,在ONLY_FULL_GROUP_BY这种模式下:对于GROUP BY聚合操作,如果在 SELECT 中的列,没有在 GROUP BY 中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中。 也就是说对于上面的查询我得写成这样:SELECT department_id

weixin_46250898的博客 4356

鸿蒙开发实战项目(九十二):HUAWEI Health血压测量

是华为开发的用于运动健康领域的一个开放平台, 三方APP可以借助HUAWEI Health开放平台提供的。

斌擎科技 1131

division by zero_MySql报错only_full_group_by的解决办法

前段时间我在一个新环境里部署程序时遇到MySql报错only_full_group_by,之前已经遇到过一次同样的问题,当时没有总结经验,导致这次解决时耗费了不少时间,这里把本次的处理过程进行记录总结,同时分享给大家MySql数据库报错如下,从字面意思理解是select后面查询的字段没有出现在group by中com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxE...

weixin_39568781的博客 408

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

mysql full_group_by_MySql报错only_full_group_by的解决办法

前段时间我在一个新环境里部署程序时遇到MySql报错only_full_group_by,之前已经遇到过一次同样的问题,当时没有总结经验,导致这次解决时耗费了不少时间,这里把本次的处理过程进行记录总结,同时分享给大家MySql数据库报错如下,从字面意思理解是select后面查询的字段没有出现在group by中com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxE...

weixin_35645230的博客 974

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

mysql full group by_MySql报错only_full_group_by的解决办法

前段时间我在一个新环境里部署程序时遇到MySql报错only_full_group_by,之前已经遇到过一次同样的问题,当时没有总结经验,导致这次解决时耗费了不少时间,这里把本次的处理过程进行记录总结,同时分享给大家MySql数据库报错如下,从字面意思理解是select后面查询的字段没有出现在group by中com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxE...

weixin_42576410的博客 438

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

mysql使用group by查询报错SELECT list is not in GROUP BY clause and contains nonaggregated column...解决方案

MySQL5.7.5后only_full_group_by成为sql_mode的默认选项之一,这可能导致一些sql语句失效。 比如在使用group by进行分组查询报错 1 查看自己的sql_mode配置: 在sql命令行中输入select @@sql_mode;这时我们能够看到自己的sql_mode配置,其中如果有ONLY_FULL_GROUP_BY,那它就是group by查询报错的罪魁祸...

study_in的博客 7万+

mysql报错502_MySql报错only_full_group_by的解决办法

MySql数据库报错如下,从字面意思理解是select后面查询的字段没有出现在group by中com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Expression #2 of SELECT list is not in GROUP BY clause andcontains nonaggregated column 'testd...

weixin_39911916的博客 276

MySQL 报错 ONLY_FULL_GROUP_BY 解决办法

网上很多解决方案, 都是一个意思, 修改sql_mode, 但是我找了好多文章, 发现改了之后MySQL无法启动了, 应该是不同的MySQL支持的mode不一样?然后在/etc/my.cnf(Linux), MySQL安装路径/my.ini (Windows)去掉ONLY_FULL_GROUP_BY。比如我的是MySQL8.4.3。XXX替换成上面查出来的内容。

qq_18155259的博客 495

mysql 报错Err 1055 或 only_full_group_by的解决办法

前段时间我在一个新环境里部署程序时遇到MySql报错only_full_group_by,之前已经遇到过一次同样的问题,当时没有总结经验,导致这次解决时耗费了不少时间,这里把本次的处理过程进行记录总结,同时分享给大家 MySql数据库报错如下,从字面意思理解是select后面查询的字段没有出现在group by中 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #2 of SELECT list is ..

m0_37785949的博客 416
上一篇: 用java和python和javascript的视角来学习算法
下一篇: TypeScript代码集
cpp131313
博客等级 码龄15年 1粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值