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
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 值
- STRICT_TRANS_TABLES
- 启用严格模式,对非事务性存储引擎(如 MyISAM)也应用严格的数据校验。在严格模式下,如果插入或更新的数据不符合列的数据类型或约束条件,MySQL 将拒绝执行并返回错误。
- STRICT_ALL_TABLES
- 类似于
STRICT_TRANS_TABLES,但对所有存储引擎都应用严格的数据校验。
- 类似于
- NO_ZERO_IN_DATE
- 不允许日期和月份部分为 0 的日期值(如 '2023-00-01')。
- NO_ZERO_DATE
- 不允许日期值为 '0000-00-00'。
- ALLOW_INVALID_DATES
- 允许插入无效的日期值(如 '2023-02-30'),但通常不推荐使用此模式,因为它可能会导致数据不一致。
- ERROR_FOR_DIVISION_BY_ZERO
- 在除法运算中,如果除数为零,则产生错误而不是返回 NULL。
- NO_AUTO_CREATE_USER
- 禁止 GRANT 语句自动创建新用户,如果新用户不存在,则 GRANT 语句将失败。请注意,在 MySQL 8.0 中,这个
sql_mode值可能已经被移除或不再使用。
- 禁止 GRANT 语句自动创建新用户,如果新用户不存在,则 GRANT 语句将失败。请注意,在 MySQL 8.0 中,这个
- NO_ENGINE_SUBSTITUTION
- 如果创建表时指定的存储引擎被禁用或未编译,则拒绝创建表。
- PIPES_AS_CONCAT
- 将 '||' 用作字符串连接操作符,而不是逻辑 OR 操作符。这更符合一些其他数据库系统的行为。
- ANSI_QUOTES
- 将双引号(")视为标识符引用字符,而不是字符串字面量的定界符。这有助于与 ANSI SQL 标准保持一致。
- ONLY_FULL_GROUP_BY
- 启用此模式后,
SELECT列表、HAVING条件和ORDER BY列表中的列必须明确地包含在GROUP BY子句中,或者被聚合函数包围。这有助于防止意外的查询结果。
- 启用此模式后,
注意
由于 MySQL 的版本更新,某些
sql_mode值可能已被移除、更名或行为发生变化。默认情况下,MySQL 8.0 的
sql_mode可能包括ONLY_FULL_GROUP_BY、STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO和NO_ENGINE_SUBSTITUTION等值,但具体值可能因安装和配置而异。要查看当前 MySQL 服务器的
sql_mode设置,可以使用SELECT @@GLOBAL.sql_mode;(查看全局设置)或SELECT @@SESSION.sql_mode;(查看会话级设置)命令。修改
sql_mode可以在 MySQL 的配置文件(如my.cnf或my.ini)中设置,也可以在 MySQL 会话中动态地设置(使用SET GLOBAL或SET SESSION命令)。但是,请注意,动态修改全局sql_mode需要具有足够的权限,并且新设置的值将在新的会话中生效,而不影响当前已存在的会话。
以下是MySQL中一些常见的sql_mode值,这些值可以单独使用或组合使用来定义MySQL服务器的SQL语法和数据校验行为:STRICT_TRANS_TABLESSTRICT_ALL_TABLESNO_ZERO_IN_DATENO_ZERO_DATEALLOW_INVALID_DATESERROR_FOR_DIVISION_BY_ZERONO_AUTO_CREATE_USER(注意:在MySQL 8.0中可能已被移除或不再使用)NO_ENGINE_SUBSTITUTIONPIPES_AS_CONCATANSI_QUOTESIGNORE_SPACENO_BACKSLASH_ESCAPESNO_UNSIGNED_SUBTRACTIONPAD_CHAR_TO_FULL_LENGTHNO_DIR_IN_CREATEREAL_AS_FLOATANSITRADITIONALONLY_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的更多相关文章
- 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 ...
- [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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 【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 ...
随机推荐
- PHP转Go系列 | ThinkPHP与Gin框架之API接口签名设计实践
大家好,我是码农先森. 回想起以前用模版渲染数据的岁月,那时都没有 API 接口开发的概念.PHP 服务端和前端 HTML.CSS.JS 代码混合式开发,也不分前端.后端程序员,大家都是全干工程师.随 ...
- position的值, relative和absolute分别是相对于谁进行定位的?
relative: 相对定位,相对于自己本身在正常文档流中的位置进行定位 相对它原来的位置,在走100px.原来在标准流中的位置继续占有. absolute: 生成绝对定位,相对于最近一级定位不为s ...
- 解决方案 | cad选择集找出包含特定字符串的多行文本
代码如下: 1 # 选择文本中出现特定单词的多行文字 2 # 下面的代码将选择条件定义为文本字符串中出现"The"的任意选项.此示例还演示了选择方法的用法:MtextSelectB ...
- Three光源Target位置改变光照方向不变的问题及解决方法
0x00 楔子 在 Three.js 中,光源的目标(target)是一种用于指定光源方向的重要元素.在聚光灯中和定向光(DirectionalLight)中都有用到. 有时我们可能会遇到光源目标位置 ...
- [oeasy]python0092_homebrew_家酿俱乐部_比尔盖茨_保罗艾伦
编码进化 个人电脑 intel 8080 的出现 让 人人都 可能有 一台计算机 Ed Robert 的 创业之路 从 售卖 diy 组装配件 到进军 计算器市场 计算器 毕竟不是 个人计算机 这计算 ...
- oeasy教您玩转vim - 81 - # 宏macro的进阶
宏的进阶 macro 回忆 关于宏,上次有4个要点 qa 开始录制宏 q 结束录制宏 @a 应用宏 qA 追加录制宏 甚至可以编辑宏 "ap 把宏作为文本粘贴出来 编辑之后 " ...
- C#:进程之间传递数据
一.思路 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.常用的方法有 使用内存映射文件 通过共享内存DLL共享内存 使用SendMessage向另一进程发送WM_COPYDATA ...
- 指针_C
指针的代码 // Code file created by C Code Develop #include "ccd.h" #include "stdio.h" ...
- Python 华为云OSS建桶与文件上传下载删除及检索示例
华为云OSS建桶与文件上传下载删除及检索示例 实践环境 运行环境: Python 3.5.4 CentOS Linux release 7.4.1708 (Core)/Win10 需要安装以下类库: ...
- 题解:CF1918B Minimize Inversions
CF1918B Minimize Inversions 思路 暴力 一个一个的算,复杂度巨大. 数学规律 让逆序最少,也就是让升序更多.我们可以通过多组数据实验,最终我们会发现,将数列 \(A\) 减 ...