MYSQL5.7版本sql_mode=only_full_group_by问题[通俗易懂]

MYSQL5.7版本sql_mode=only_full_group_by问题[通俗易懂]下载安装的是最新版的mysql5.7.x版本,默认是开启了 only_full_group_by 模式的,但开启这个模式后,原先的 group by 语句就报错,然后又把它移除了。 一旦开启 onl…

下载安装的是最新版的mysql5.7.x版本,默认是开启了 only_full_group_by 模式的,但开启这个模式后,原先的 group by 语句就报错,然后又把它移除了。

一旦开启 only_full_group_by ,感觉,group by 将变成和 distinct 一样,只能获取受到其影响的字段信息,无法和其他未受其影响的字段共存,这样,group by 的功能将变得十分狭窄了

only_full_group_by 模式开启比较好。

因为在 mysql 中有一个函数: any_value(field) 允许,非分组字段的出现(和关闭 only_full_group_by 模式有相同效果)。

具体出错提示:

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column "information_schema.PROFILING.SEQ" which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

代码100分

1、查看sql_mode

代码100分select @@global.sql_mode;

查询出来的值为:

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

2、去掉ONLY_FULL_GROUP_BY,重新设置值。

代码100分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";

3、上面是改变了全局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";

解决办法大致有两种: 一:在sql查询语句中不需要group by的字段上使用any_value()函数

这种对于已经开发了不少功能的项目不太合适,毕竟要把原来的sql都给修改一遍

二:修改my.cnf(windows下是my.ini)配置文件,删掉only_full_group_by这一项

若我们项目的mysql安装在ubuntu上面,找到这个文件打开一看,里面并没有sql_mode这一配置项,想删都没得删。

当然,还有别的办法,打开mysql命令行,执行命令

select @@sql_mode;

这样就可以查出sql_mode的值,复制这个值,在my.cnf中添加配置项(把查询到的值删掉only_full_group_by这个选项,其他的都复制过去):

sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;

如果 [mysqld] 这行被注释掉的话记得要打开注释。然后重重启mysql服务

注:使用命令

set sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

这样可以修改一个会话中的配置项,在其他会话中是不生效的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10693.html

(0)
上一篇 2022-12-23
下一篇 2022-12-23

相关推荐

  • 揭秘字节跳动云原生Spark History 服务 UIService「建议收藏」

    揭秘字节跳动云原生Spark History 服务 UIService「建议收藏」本文是字节跳动数据平台数据引擎SparkSQL团队针对 Spark History Server (SHS) 的优化实践分享。 文 | 字节跳动数据平台—数据引擎—SparkSQL团队 在字节跳动内部

    2023-05-09
    95
  • Redis持久化实现的简单过程[亲测有效]

    Redis持久化实现的简单过程[亲测有效]Redis有3种实现持久化的方式:AOF日志、RDB快照、混合持久化 Redis写入AOF日志的过程 Redis执行完写操作命令后,将命令追加到server.aof_buf缓冲区 通过write()系

    2023-06-10
    91
  • Redis面试问题「终于解决」

    Redis面试问题「终于解决」https://blog.csdn.net/Butterfly_resting/article/details/89668661 本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存…

    2023-03-17
    102
  • 使用Python Tutor进行代码可视化学习

    使用Python Tutor进行代码可视化学习Python作为一门高级编程语言,非常的受欢迎。Python的简移易学是其受欢迎的原因之一,但是学习编程仍然对初学者来说是一项挑战。Python Tutor是一种工具,帮助添加视觉元素到Python代码,它能帮助完全没有编程知识的人学习基础的编程概念。在这篇文章中,我们将介绍如何使用Python Tutor和一些常见的编程概念,包括变量、条件语句和循环。

    2024-04-26
    15
  • TiDB 4.0 为解决热点问题做了哪些改进?[通俗易懂]

    TiDB 4.0 为解决热点问题做了哪些改进?[通俗易懂]作者:李坤 热点问题概述 一直以来,TiDB 的数据访问热点问题,是用户比较关注的问题。为什么这个问题如此突出呢?这其实是“分布式”带来的结构效应。单机数据库由于只有一个节点,是不存在热点问题的(因…

    2023-03-29
    108
  • 用途广泛的Python CGI编程详解

    用途广泛的Python CGI编程详解Python作为一种面向对象的解释型编程语言,具有简洁明了、易读易写、开发效率高等优点,在Web开发、人工智能、自动化测试等众多领域被广泛应用。在Web开发领域,Python的CGI编程是一种常用的技术,可以处理从Web服务器接收的信息并产生Web页面。在本文中,我们将从多个方面详细阐述Python CGI编程的使用方法和技巧。

    2024-01-09
    66
  • Python By Walk:如何让您的代码更易读、更高效?

    Python By Walk:如何让您的代码更易读、更高效?Python语言有着简单易学、可读性强等特点,但是当代码量变大后,代码阅读体验也会变得更为困难。为了让您的Python代码更易读、更高效,接下来我们将从选取变量名、函数的设计、代码注释、代码优化等多个方面详细阐述。

    2024-01-30
    56
  • Windows10远程桌面连接CentOS7「终于解决」

    Windows10远程桌面连接CentOS7「终于解决」Windows10远程桌面连接CentOS7 羽化半径 2019-05-23 10:10:37 5984 收藏 16 分类专栏: windows CentOS7 版权 开始前请确保你有能上网的主机两…

    2023-03-26
    107

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注