sql_mode=only_full_group_by


版权声明:本文为参考多篇博主文章,略作测试修改。

参考文章:

  猿医生 的《5分钟学会MySQL-this is incompatible with sql_mode=only_full_group_by错误解决方案》。

  XiaoMaPro 的 《MySql版本问题sql_mode=only_full_group_by

  hhcoder 的 《Mysql group by this is incompatible with sql_mode=only_full_group_by


一、错误信息:

使用左连接进行group by 操作时,报如下错误:

#1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated 
column 'b.id' which is not functionally dependent on columns in GROUP BY clause; 
this is incompatible with sql_mode=only_full_group_by


二、错误翻译:

#1055-选择列表的表达式3不在GROUP BY子句中,
并且包含未聚合的列“b.id”,
该列在功能上不依赖GROUP BY子句中的列;这与SQL模式=仅“完整”GROUP BY不兼容。


三、错误原因:

MySQL 5.7,实现检测功能的依赖。
如果启用了ONLY_FULL_GROUP_BY SQL模式(默认),
MySQL拒绝选择列表查询,条件,或命令列表是指非聚合列既不是GROUP by子句中指定功能也不依赖他们。
(5.7之前,MySQL不检测功能的依赖和ONLY_FULL_GROUP_BY在默认情况下不启用。
ONLY_FULL_GROUP_BY,对于GROUP BY聚合操作,
如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,
也就是说查出来的列必须在GROUP BY后面出现否则就会报错,或者这个字段出现在聚合函数里面。


四、解决:

(1)可以先查看下mysql版本:

select version();
结果:5.7.14-log

(2)再使用select @@GLOBAL.sql_mode,查看ONLY_FULL_GROUP_BY是否启用。

结果显示示例:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

结果中有ONLY_FULL_GROUP_BY,代表被启用。

(3)把这一项去掉:

set @@GLOBAL.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

(4)或者修改配置文件
  1、打开配置文件mysql.cnf

sudo vi /etc/mysql/mysql.cnf

  2、添加配置

sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

  3、重启mysql

sudo service mysql restart

(5)重新查看sql_mode,看是否修改成功。

SELECT @@sql_mode;

(6)测试

执行sql语句,看是否还报错。


#1055 ... sql_mode=only_full_group_by的更多相关文章

  1. 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 ...

  2. 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 ...

  3. sql查询出现1055 this is incompatible with sql_mode=only_full_group_by

    今天在测试服务器上突然出现了这么一个MySQL的问题,同样的代码正式服没有问题,那肯定就是出在了配置上,查了一下原因才明白原来是数据库版本为5.7以上的版本, 默认是开启了 only_full_gro ...

  4. MYSQL5.7版本sql_mode=only_full_group_by问题

    具体出错提示: [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggr ...

  5. 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 ...

  6. 【Solution】MySQL 5.8 this is incompatible with sql_mode=only_full_group_by

    [42000][1055] Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated colu ...

  7. MySQL 5.7版本 sql_mode=only_full_group_by 问题

    具体错误: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in ...

  8. MySQL查询语句报错 sql_mode=only_full_group_by 问题

    升级MySQL到5.7后,查询语句总是报sql_mode=only_full_group_by问题,总结归纳了两种解决方案,推存第二种解决方案. 报错信息: [Err] 1055 - Expressi ...

  9. mysql连表分组报错---- sql_mode=only_full_group_by问题解决

    #### sql语句报错问题 #1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggreg ...

随机推荐

  1. golang 通过reflect反射修改值

    不是所有的反射值都可以修改.对于一个反射值是否可以修改,可以通过CanSet()进行检查. 要修改值,必须满足: 可以寻址 可寻址的类型: 指针指向的具体元素 slice的元素 可寻址的结构体的字段( ...

  2. leetcode 78子集

    采用回溯法:对于例子图解执行过程如下,其中向上的分支为向下递归,向下的分支为第二次递归,因此已经push了对应的下标的值,则从根到右边连起来的路径即为组合 由于整个过程类似于二叉树的中序遍历,因此代码 ...

  3. xstream解析xml时遇到特殊字符出错

    在xml中有"&"符号时,解析xml出错 解决办法: 将&替换成&

  4. logistic regression中的cost function选择

    一般的线性回归使用的cost function为: 但由于logistic function: 本身非凸函数(convex function), 如果直接使用线性回归的cost function的话, ...

  5. 字体Lucida Console

    曾经有个段子说的是,一眼能认出黑客的原因就是因为对方在使用黑屏荧光字加Lucida Console其实这正说明了Lucida Console在终端使用的受欢迎程度.Lucida Console也是英文 ...

  6. 微信小程序的配置详解

    1.配置详解: 使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 等. 1>pages 接受一个数组,每一项都是字符串,来指定小 ...

  7. GO——beego简单开发实例(二)

    在新建项目成功之后我们可以做一个简单的动态增删查改. 1.在models文件夹下新建models.go,根据模型新建表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 ...

  8. 给nginx添加客户端的请求最大单文件限制

    在nginx.conf中添加如下. client_max_body_size 10m; #允许客户端请求的最大单文件字节数 client_body_buffer_size 128k; #缓冲区代理缓冲 ...

  9. selenium—隐式等待和显式等待

    一.隐式等待和显式等待的区别 隐式等待:是整个页面的等待.设置一个最长的等待时间,在规定时间内整个页面加载完成,则执行下一步,否则继续等待直到最长等待时间结束. 显式等待:是针对某个元素的等待.在设置 ...

  10. 洛谷 P1233 木棍加工 题解

    题面 Dilworth定理:在数学理论中的序理论与组合数学中,Dilworth定理根据序列划分的最小数量的链描述了任何有限偏序集的宽度. 反链是一种偏序集,其任意两个元素不可比:而链则是一种任意两个元 ...