问题描述

因为开发环境和正式环境所使用的mysql数据库的版本不一样,开发环境使用的时候5.7而正式环境使用的是8.0,而在Mysql的8.0版本中默认是开启sql_mode = only_full_group_by。

我们使用分组查询时,出现在select字段后面的只能是group by后面的分组字段,或使用聚合函数包裹着的字段。

如何解决(永久性)

1.在MySQL下执行语句

SELECT @@sql_mode

2.将查询结果中的ONLY_FULL_GROUP_BY去掉然后复制

  • 找到MySQL的配置文件windows 默认为my.ini 在[mysqld]下面增加配置如下:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

最后打开任务管理器,重启mysql即可。

解决2(暂时性重启mysql失效)

  1. 执行如下语句:
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

2.使用如下语句查看:

SELECT @@sql_mode

3.没有ONLY_FULL_GROUP_BY即可。

扩展

mysql8.0中有一个环境变量sql_mode,定义了mysql应该支持的sql语法,数据校验等!

ONLY_FULL_GROUP_BY

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

STRICT_TRANS_TABLES

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

NO_ZERO_IN_DATE

在严格模式,不接受月或日部分为0的日期。如果使用IGNORE选项,我们为类似的日期插入’0000-00-00’。在非严格模式,可以接受该日期,但会生成警告。

NO_ZERO_DATE

在严格模式,不要将 '0000-00-00’做为合法日期。你仍然可以用IGNORE选项插入零日期。在非严格模式,可以接受该日期,但会生成警告

ERROR_FOR_DIVISION_BY_ZERO

在严格模式,在INSERT或UPDATE过程中,如果被零除(或MOD(X,0)),则产生错误(否则为警告)。如果未给出该模式,被零除时MySQL返回NULL。如果用到INSERT IGNORE或UPDATE IGNORE中,MySQL生成被零除警告,但操作结果为NULL。

NO_AUTO_CREATE_USER

防止GRANT自动创建新用户,除非还指定了密码。

NO_ENGINE_SUBSTITUTION

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

mysql8.0 新特性 sql_mode(mysql 报错1055)相关推荐

  1. MySQL报错1055解决办法:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains

    [mysql报错1055 报错解决办法][Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and cont ...

  2. MySQL基础篇13【MySQL8.0新特性】

    目录 1. MySQL8新特性概述 1.1 MySQL8.0 新增特性 1.2 MySQL8.0移除的旧特性 新特性1:窗口函数 2.1 使用窗口函数前后对比 2.2 窗口函数分类 2.3 语法结构 ...

  3. Mysql报错1055

    Mysql group by报错 1055 [Err] 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains ...

  4. Mysql基础篇(10)—— MySQL8.0新特性概览

    新增的新特性 更简便的NoSQL支持. 更好的索引,新增了隐藏索引和降序索引.隐藏索引可以用来去掉索引对查询性能的影响.在查询中混合存在多列索引时,使用降序索引可以提高查询的性能. 更完善的JSON支 ...

  5. MySQL8.0 - 新特性 - 临时表改进

    temptable engine 我们知道UNION, DERIVED TABLE, CTE, 子查询或者distinct order by之类的查询都可能用到临时表来存储中间结果,官方文档中列举了几 ...

  6. MySQL8.0 - 新特性 - Instant Add Column

    MySQL8.0开始对一些DDL操作做了大量的优化,例如原子DDL, 快速DDL(只修改元数据),前者解决了长期以来mysql的一大诟病,后者则提升了dba同学的生活品质 官方文档列出了一些可以快速d ...

  7. 深入解读MySQL8.0 新特性 :Crash Safe DDL

    前言 在MySQL8.0之前的版本中,由于架构的原因,mysql在server层使用统一的frm文件来存储表元数据信息,这个信息能够被不同的存储引擎识别.而实际上innodb本身也存储有元数据信息.这 ...

  8. MySQL8.0 - 新特性 - 安全及权限相关改进

    MySQL8.0里引入了不少关于权限的改动,从这些改动可以看出来,权限管理更加的规范和遍历了,这和我们之前为rds mysql增加了大量权限管理很类似,想来Oracle也是通过这些改动为其云业务服务的 ...

  9. 深入解读MySQL8.0 新特性 :Crash Safe DDL 1

    前言 在MySQL8.0之前的版本中,由于架构的原因,mysql在server层使用统一的frm文件来存储表元数据信息,这个信息能够被不同的存储引擎识别.而实际上innodb本身也存储有元数据信息.这 ...

最新文章

  1. MongoDB安装指南
  2. redmine1.3.x 插件安装
  3. 视图、存储函数、存储过程、触发器:MySQL系列之五
  4. 停止抱怨英语_停止抱怨垂直视频
  5. javascript函数,值得参考!
  6. 口袋之旅html5超强账号,口袋之旅特攻排行榜 强大的绝对能力
  7. mongodb的更新语句
  8. C# 无边框异型窗体制作
  9. 【Dairy】2016.11.5
  10. vue 中样式的绑定
  11. vs201X的TFS(Team Foundation Server) 设置为:不自动签出
  12. bps(bits per second)
  13. 智慧景区“数字孪生“三维可视化运营管理平台-景区“元宇宙”的数字
  14. python适合做网站吗_零基础学python—做网站
  15. 浅谈解析库XPath,bs4和pyquery
  16. Surface3 2+64 wifi版本重装8.1系统(疑难解答中无从‘驱动器恢复‘选项,另一种方式成功)
  17. 编程求斐波那契数列的第n项和前n项之和。
  18. 目标检测中的NMS,soft NMS,softer NMS,Weighted Boxes Fusion
  19. [转贴]:软件过程改进:经验和教训
  20. 微信小程使用getCurrentPages函数操作父级数据

热门文章

  1. 还在借口美工差不会logo?一个方法教你快速设计logo,初学者必看
  2. 机顶盒 img打包工具_SOLIDWORKS RX工具使用说明
  3. 大数据知识面试题-Hadoop(2022版)
  4. Mac移动硬盘不正确卸载造成不识别解决方法
  5. 水墨飘香 国画徜徉——安利公益基金会之国画学习顺利开展
  6. Java实现Excel和Office Open XML之间的相互转换
  7. 链游阴阳师:Defina Finance
  8. [ASP.NET]为什么CustomValidator验证控件在验证DropdownList的时候不能设置ControlToValidate属性...
  9. 神经网络与深度学习 - 作业3
  10. PAT-乙级 1009 说反话(C语言)栈解法