MySQL 8 的默认 sql_mode 包含了only_full_group_by,如果想要sql不按照这模式做检查,可以设置当前session的sql_mode值不包含oly_full_group_by;

全局修改则使用以下sql

-- 全局配置 session级配置则去掉Global
SET GLOBAL sql_mode='ANSI_QUOTES,STRICT_ALL_TABLES,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
SELECT @@GLOBAL.sql_mode; -- 查看全局设置
SELECT @@SESSION.sql_mode; -- 查看会话级设置

在 MySQL 中,sql_mode 是一个系统变量,用于定义 MySQL 服务器的 SQL 语法和数据校验的行为。MySQL 支持多种 sql_mode 值,这些值可以单独设置,也可以组合使用。然而,由于 MySQL 的版本更新和功能的增加,sql_mode 的具体值可能会有所变化。以下是一些常见的 sql_mode 值,但请注意这并不是一个完整的列表,因为 MySQL 可能会在未来的版本中引入新的 sql_mode 值。

常见的 sql_mode

  1. STRICT_TRANS_TABLES

    • 启用严格模式,对非事务性存储引擎(如 MyISAM)也应用严格的数据校验。在严格模式下,如果插入或更新的数据不符合列的数据类型或约束条件,MySQL 将拒绝执行并返回错误。
  2. STRICT_ALL_TABLES
    • 类似于 STRICT_TRANS_TABLES,但对所有存储引擎都应用严格的数据校验。
  3. NO_ZERO_IN_DATE
    • 不允许日期和月份部分为 0 的日期值(如 '2023-00-01')。
  4. NO_ZERO_DATE
    • 不允许日期值为 '0000-00-00'。
  5. ALLOW_INVALID_DATES
    • 允许插入无效的日期值(如 '2023-02-30'),但通常不推荐使用此模式,因为它可能会导致数据不一致。
  6. ERROR_FOR_DIVISION_BY_ZERO
    • 在除法运算中,如果除数为零,则产生错误而不是返回 NULL。
  7. NO_AUTO_CREATE_USER
    • 禁止 GRANT 语句自动创建新用户,如果新用户不存在,则 GRANT 语句将失败。请注意,在 MySQL 8.0 中,这个 sql_mode 值可能已经被移除或不再使用。
  8. NO_ENGINE_SUBSTITUTION
    • 如果创建表时指定的存储引擎被禁用或未编译,则拒绝创建表。
  9. PIPES_AS_CONCAT
    • 将 '||' 用作字符串连接操作符,而不是逻辑 OR 操作符。这更符合一些其他数据库系统的行为。
  10. ANSI_QUOTES
    • 将双引号(")视为标识符引用字符,而不是字符串字面量的定界符。这有助于与 ANSI SQL 标准保持一致。
  11. ONLY_FULL_GROUP_BY
    • 启用此模式后,SELECT 列表、HAVING 条件和 ORDER BY 列表中的列必须明确地包含在 GROUP BY 子句中,或者被聚合函数包围。这有助于防止意外的查询结果。

注意

  • 由于 MySQL 的版本更新,某些 sql_mode 值可能已被移除、更名或行为发生变化。

  • 默认情况下,MySQL 8.0 的 sql_mode 可能包括 ONLY_FULL_GROUP_BYSTRICT_TRANS_TABLESNO_ZERO_IN_DATENO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERONO_ENGINE_SUBSTITUTION 等值,但具体值可能因安装和配置而异。

  • 要查看当前 MySQL 服务器的 sql_mode 设置,可以使用 SELECT @@GLOBAL.sql_mode;(查看全局设置)或 SELECT @@SESSION.sql_mode;(查看会话级设置)命令。

  • 修改 sql_mode 可以在 MySQL 的配置文件(如 my.cnfmy.ini)中设置,也可以在 MySQL 会话中动态地设置(使用 SET GLOBALSET SESSION 命令)。但是,请注意,动态修改全局 sql_mode 需要具有足够的权限,并且新设置的值将在新的会话中生效,而不影响当前已存在的会话。

    以下是MySQL中一些常见的 sql_mode值,这些值可以单独使用或组合使用来定义MySQL服务器的SQL语法和数据校验行为:

  • STRICT_TRANS_TABLES

  • STRICT_ALL_TABLES

  • NO_ZERO_IN_DATE

  • NO_ZERO_DATE

  • ALLOW_INVALID_DATES

  • ERROR_FOR_DIVISION_BY_ZERO

  • NO_AUTO_CREATE_USER(注意:在MySQL 8.0中可能已被移除或不再使用)

  • NO_ENGINE_SUBSTITUTION

  • PIPES_AS_CONCAT

  • ANSI_QUOTES

  • IGNORE_SPACE

  • NO_BACKSLASH_ESCAPES

  • NO_UNSIGNED_SUBTRACTION

  • PAD_CHAR_TO_FULL_LENGTH

  • NO_DIR_IN_CREATE

  • REAL_AS_FLOAT

  • ANSI

  • TRADITIONAL

  • ONLY_FULL_GROUP_BY

请注意,这并非一个完整的列表,因为MySQL可能在不同版本中引入新的 sql_mode值或修改现有值的行为。此外,由于MySQL的灵活性和可配置性,某些 sql_mode值可能在不同安装或配置中默认启用或禁用。

1055 - Expression #9 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'xxx.xxx.xxx' which is not functionally ...;this is incompatible with sql_mode=only_full_group_by的更多相关文章

  1. MYSQL报错:1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

    1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'rpa ...

  2. [mysql] Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'loser.tank_admin.login_ip' which is not functionally dependent on columns in GROUP BY clause; this is

    执行SQL: SELECT login_name,login_ip,sex FROM tank_admin GROUP BY login_name ; 时抛出异常. Expression #2 of ...

  3. Error Code: 1055.Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.

    环境:mysql-8.0.15-winx64 问题描述: Error querying database. Cause: java.sql.SQLSyntaxErrorException: Expre ...

  4. SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated

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

  5. Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'blog.t_blog.addTime' which is not functi

    sql报错: Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT ...

  6. mysql升级后出现Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.

    安装了mysql5.7,用group by 查询时抛出如下异常: Expression #3 of SELECT list is not in GROUP BY clause and contains ...

  7. Expression #4 of SELECT list is not in GROUP BY clause and contains nonaggregated column

    Error: javax.servlet.ServletException: java.sql.SQLSyntaxErrorException: Expression #4 of SELECT lis ...

  8. Mysql Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘xx‘

    MySql执行分组sql报错: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated co ...

  9. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'userinfo.

    安装了mysql5.7,用group by 查询时抛出如下异常: Expression # of SELECT list is not in GROUP BY clause and contains ...

  10. 【mybatis】【mysql】mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

    mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains no ...

随机推荐

  1. 自己写一个 NODE/ATTR 的结构

    ## python 3.8 以上 from typing import Dict, List, TypeVar, Tuple, Generic, get_args import json T = Ty ...

  2. Linux 提权-SUID/SGID_2

    本文通过 Google 翻译 SUID | SGID Part-2 – Linux Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释 ...

  3. ISCTF2023

    ISCTF 2023 Misc 签到题 公众号发送:小蓝鲨,我想打ctf ISCTF{W3lcom3_7O_2023ISCTF&BlueShark} 你说爱我?尊嘟假嘟 你说爱我替换.,真嘟替 ...

  4. sheetjs导出表格时间错误问题

    最近使用sheetjs,前端web去导出生成excel,xlsx表格.其中遇到一种问题,那就是时间出错了!比如多出8小时43秒,少了43秒.看到这种问题的时候,我也一脸懵逼.先上图! 不过在有些人电脑 ...

  5. .NET周刊【7月第2期 2024-07-14】

    国内文章 开源GTKSystem.Windows.Forms框架让C# winform支持跨平台运行 https://www.cnblogs.com/easywebfactory/p/18289178 ...

  6. git http(s) 保存用户密码

    git 常用配置 git记住密码 1.设置记住密码(默认15分钟): git config --global credential.helper cache 2.如果想自己设置时间,可以这样做: gi ...

  7. UE4 WebUI使用指南2-通信

    前面一篇WebUI的文章讲述的WebUI插件的下载,开启,在UE中创建,加载网页等. 本文继续讲述通过WebUI,UE和网页实现双向通信的实现思路. 一点说明 由于WebUI 使用的浏览器内核并不是最 ...

  8. Python爬虫(5-10)-编解码、ajax的get请求、ajax的post请求、URLError/HTTPError、微博的cookie登录、Handler处理器

    五.编解码(Unicode编码) (1)GET请求 所提方法都在urllib.parse.路径下 get请求的quote()方法(适用于只提交一两个参数值) url='http://www.baidu ...

  9. 使用 @Audited 增强Spring Boot 应用程序的数据审计能力

    介绍 在Spring Boot开发的动态世界中,确保数据完整性和跟踪变化是至关重要的.实现这一目标的一个强大工具是@Audited注解.本文深入探讨了该注解的复杂性.其目的.实现步骤以及如何利用其功能 ...

  10. 新年恭喜发财-scratch编程作品

    程序说明: <新年-恭喜发财>是一个基于Scratch平台制作的动画贺卡项目.该项目通过编程和艺术设计,展现了浓厚的中国新年(2024年为龙年)氛围,以及传统的恭喜发财祝福.动画中包含有喜 ...