sql mode 问题及解决 错误代码:1055 this is incompatible with sql_mode=only_full_group_by
数据库升级到5.7.21后,一个正常的分组后按日期排序,并返回数据的语句开始报错:
语句如下:
SELECT id,title,add_time FROM `message` GROUP BY add_time ORDER BY add_time DESC;
异常如下:
错误代码: 1055
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'miniodb.nhb_message.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
出现这个异常的原因是MYSQL5.7.5之后开启了原来默认关闭的SQL mode:ONLY_FULL_GROUP_BY.开启这个模式会造成mysql拒绝查询非聚合操作列,即没有通过group by进行分组的列,无法直接在select,having,order by条件下使用;
解决方式有三种:
1 直接将版本降级到5.7.5以下,简单粗暴,但就是有点low;
2 使用ANY_VALUE()方法显示非聚合列;这个方法将聚合操作还原为5.7.5之前版本;
使用方式:
SELECT ANY_VALUE(id),ANY_VALUE(title),add_time FROM `message` GROUP BY add_time ORDER BY ANY_VALUE(add_time) DESC;
3 最终,如果没有替代方法,再修改SQL mode;
# 修改
SET GLOBAL sql_mode = 'modes'; #需要超级权限,会影响修改后的所有连接客户端
SET SESSION sql_mode = 'modes'; #只影响当前客户端,可以随时修改
# 查询
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
修改SQL mode会影响用户分区表:
如果在分区表中有数据的情况下,修改SQL mode会导致表行为发生重大变化,可能导致数据损坏或丢失.官方建议在使用用户分区表后,不要修改SQL mode;
主从复制情况下,要注意保证主从服务器的SQL mode一致;
参考文档:
MYSQL服务器SQL Mode: https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by
MYSQL的GROUP BY处理: https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
sql mode 问题及解决 错误代码:1055 this is incompatible with sql_mode=only_full_group_by的更多相关文章
- sql查询出现1055 this is incompatible with sql_mode=only_full_group_by
今天在测试服务器上突然出现了这么一个MySQL的问题,同样的代码正式服没有问题,那肯定就是出在了配置上,查了一下原因才明白原来是数据库版本为5.7以上的版本, 默认是开启了 only_full_gro ...
- Error Code: 1055 incompatible with sql_mode=only_full_group_by
OperationalError at / (1055, "Expression #1 of ORDER BY clause is not in GROUP BY clause and co ...
- mysql 执行报错:Error querying database. Cause: java.sql.SQLSyntaxErrorException:which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
1.这个错误发生在mysql 5.7 版本及以上版本会出现的问题: mysql 5.7版本默认的sql配置是:sql_mode="ONLY_FULL_GROUP_BY",这个配置严 ...
- Mysql 分组查询出现'this is incompatible with sql_mode=only_full_group_by'的解决办法
由于Mysql自动开启了 only_full_group_by,所以若查询的字段不在group by里面,则分组报错. 解决办法其一:mysql配置,关闭only_full_group_by,这种办法 ...
- 执行sql语句后报1055-- this is incompatible with sql_mode=only_full_group_by
这个问题是mysql5.7中存在的问题,查看原因,在任意库执行select @@sql_mode,查到的结果为ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZER ...
- #1055 ... sql_mode=only_full_group_by
sql_mode=only_full_group_by 版权声明:本文为参考多篇博主文章,略作测试修改. 参考文章: 猿医生 的<5分钟学会MySQL-this is incompatible ...
- mysql group by 过滤字段 只能在SELECT 后面出现,不能写其他字段 报错解决 关键字 sql_mode=only_full_group_by
1:报错 关键字 sql_mode=only_full_group_bymysql> select uuid,ip,count(*) from dbname_report.t_client_i ...
- 解决sql_mode=only_full_group_by的问题
1.mysql查询报错: ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_ ...
- Spring3+MyBatis3整合log4j无法输出SQL语句问题的解决
今天遇到了跟下面文章一模一样的问题,下面文章的解决方案很好,在这里记录保存一下. Spring3+MyBatis3整合无法输出SQL语句问题的解决
随机推荐
- 调用顺丰API实现电商专递下单和获取面单功能
参考文章:https://www.cnblogs.com/zhangxiaoyong/p/8317229.html 顺丰需求文档: 链接:https://pan.baidu.com/s/16EEaph ...
- js判断是哪种浏览器和阻止页面加载
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 用户注册&单点登录
package com.tttttt.portal.controller; import java.util.HashMap; import java.util.Map; import javax.s ...
- luogu2657-Windy数题解--数位DP
题目链接 https://www.luogu.org/problemnew/show/P2657 分析 第一道数位DP题,发现有点意思 DP求\([L,R]\)区间内的XXX个数,很套路地想到前缀和, ...
- 初学VUE 走马灯效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Ubuntu安装telnet
安装 # sudo apt-get install xinetd telnetd 配置 -> 加入以下选项 # sudo vi /etc/inetd.conf telnet stream tcp ...
- sql语句开启事务
以下为示例代码: begin tran update 表 where 姓名='A' update 表 where 姓名='B' rollback else commit
- 阿里P7浅谈SpringMVC
一.前言 既然是浅谈 SpringMVC,那么我们就先从基础说起,本章节主要讲解以下内容: 1.三层结构介绍 2.MVC 设计模式介绍 3.SpringMVC 介绍 4.入门程序的实现 注:介绍方面的 ...
- Linux行编辑器——ed
实验文件test.txt内容 root:x:::root:/root:/bin/bash bin:x:::bin:/bin:/sbin/nologin daemon:x:::daemon:/sbin: ...
- U盘装manjaro 18报Python error in job “initcpio”
更新: 还是不行,大家再找别的方法. 以下内容仅做参考,意义不大. U盘安装 用rufus做U盘,写入选DD模式,比ISO模式可靠点. 错误解决 报错信息: Error installing Manj ...