MySQL SQL Mode及其说明
以下是MySQL中所有支持的SQL Mode及其说明,综合了多个来源的信息并进行了分类整理:
一、严格模式相关
-
STRICT_TRANS_TABLES
- 对事务型存储引擎(如InnoDB)启用严格数据校验。若插入非法值(如类型不符、超出范围等),语句会被中止。对于非事务表,仅当首行数据非法时中止语句。
-
STRICT_ALL_TABLES
- 对所有存储引擎启用严格模式。与
STRICT_TRANS_TABLES
的区别在于:对于多行插入的非事务表,即使后续行数据非法,也会中止整个操作(而非仅跳过非法行)。
- 对所有存储引擎启用严格模式。与
-
TRADITIONAL
- 组合模式,等同于
STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
。行为类似传统SQL数据库,对非法数据直接报错而非警告。
- 组合模式,等同于
二、日期与零值控制
-
NO_ZERO_IN_DATE
- 禁止年月日中部分为零的日期(如
2025-00-01
),但允许0000-00-00
。需与严格模式配合生效。
- 禁止年月日中部分为零的日期(如
-
NO_ZERO_DATE
- 禁止
0000-00-00
作为有效日期。若启用严格模式,插入该值会报错。
- 禁止
-
ALLOW_INVALID_DATES
- 宽松日期校验,仅检查月份(1-12)和日(1-31),不验证实际有效性(如允许
2025-02-30
)。不适用于TIMESTAMP列。
- 宽松日期校验,仅检查月份(1-12)和日(1-31),不验证实际有效性(如允许
三、数学运算与类型处理
-
ERROR_FOR_DIVISION_BY_ZERO
- 除零或模零操作在严格模式下报错(否则返回NULL并警告)。注意:该模式在MySQL 8.0中已标记为弃用,其功能将合并到严格模式。
-
NO_UNSIGNED_SUBTRACTION
- 允许无符号整数减法结果为负数(默认会溢出报错)。
-
REAL_AS_FLOAT
- 将
REAL
类型视为FLOAT
(默认视为DOUBLE
)。
- 将
四、语法与标识符规则
-
ANSI_QUOTES
- 双引号
"
视为标识符引用符(如列名),而非字符串引号。需改用单引号定义字符串。
- 双引号
-
IGNORE_SPACE
- 允许函数名与括号间有空格(如
COUNT (1)
),但会导致函数名成为保留字需转义。
- 允许函数名与括号间有空格(如
-
PIPES_AS_CONCAT
- 将
||
视为字符串连接符(标准SQL行为),而非逻辑OR。
- 将
-
HIGH_NOT_PRECEDENCE
- 提高
NOT
运算符优先级(如NOT a BETWEEN b AND c
解析为(NOT a) BETWEEN b AND c
)。
- 提高
五、GROUP BY与聚合控制
- ONLY_FULL_GROUP_BY
- 严格校验GROUP BY查询,SELECT中的非聚合列必须在GROUP BY子句中出现或函数依赖。
六、引擎与存储相关
-
NO_ENGINE_SUBSTITUTION
- 若创建表时指定不可用的存储引擎(如未编译的引擎),直接报错而非替换为默认引擎。
-
NO_DIR_IN_CREATE
- 忽略建表语句中的
INDEX DIRECTORY
和DATA DIRECTORY
指令(常用于主从复制环境)。
- 忽略建表语句中的
七、其他特殊模式
-
NO_AUTO_VALUE_ON_ZERO
- 禁止
0
作为自增列的下一个值(仅NULL
触发自增)。
- 禁止
-
NO_BACKSLASH_ESCAPES
- 禁用反斜杠
\
作为转义符(如\n
视为普通字符)。
- 禁用反斜杠
-
PAD_CHAR_TO_FULL_LENGTH
- 检索CHAR类型时保留右端空格(默认自动修剪)。
八、组合模式(预定义模式组)
-
ANSI
- 等同于
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY
,接近标准SQL语法。
- 等同于
-
DB2/MSSQL/ORACLE/POSTGRESQL
- 兼容其他数据库的语法组合(如
PIPES_AS_CONCAT,ANSI_QUOTES
等),但这些模式在MySQL 8.0中已移除。
- 兼容其他数据库的语法组合(如
注意事项
- 不同MySQL版本的默认模式可能不同(如5.7默认包含
ONLY_FULL_GROUP_BY
和严格模式,而5.6默认宽松)。 - 部分模式(如
ERROR_FOR_DIVISION_BY_ZERO
)已弃用,未来版本可能整合到严格模式中。
完整列表可参考MySQL官方文档。
相关文章:
MySQL SQL Mode及其说明
以下是MySQL中所有支持的SQL Mode及其说明,综合了多个来源的信息并进行了分类整理: 一、严格模式相关 STRICT_TRANS_TABLES 对事务型存储引擎(如InnoDB)启用严格数据校验。若插入非法值(如类型不符、超出范围等&#…...
Web前端最新导航
前言 本文列出了很多与前端有关的常见网站、博客、工具等,整体来看比较权威。有些东西已经过时了,我就不列出来了。学是一方面,也是最主要的方面;但还有一个作用,比如,“这个前端框架你都不知道啊”、“这个…...

2025年AI工程师认证深度解析:AAIA认证体系全景指南与实战策略
一、IAAAI认证体系演进与价值定位 1.1 国际人工智能认证发展现状 全球人工智能认证市场呈现显著分化态势。据Gartner 2025Q1报告显示,北美市场以IEEE/ACM双认证体系为主导(市占率38%),欧盟区推行AI Act合规认证(强制…...
CentOS 和 RHEL
CentOS 和 RHEL(Red Hat Enterprise Linux)关系非常紧密,简而言之: CentOS 最初是 RHEL 的免费、开源克隆版,几乎与 RHEL 二进制兼容。 CentOS 原是 RHEL 的“免费双胞胎”,但已被放弃,现在推荐…...
flask开启https服务支持
目录 一、背景 二、开启https支持 三、自签名 1、安装openssl 2、验证安装 3、自签名 四、编写代码 五、访问https接口 一、背景 最近在做自动化业务,需要兼容现在主流的框架开发的前端页面,于是到github找到了几个项目,clone下来项目并…...

统计服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
文章目录 一、背景二、说明三、页面四、代码 前端 MonitorServiceProcessPage.vueMonitorServiceProcessTable.vueMonitorServiceProcessTableButton.vueaddMonitorTask.vueproductOperation.vueshowMonitorTask.vueMonitorSystemLog.vueMonitorTask.vueMonitorTaskLog.vueReal…...
【SGL】Scatter-Gather List内存传输技术
文章目录 1. What is SGL?2. sgl内存传输的原理2.1 核心思想2.2 sgl数据结构2.3 摘链和挂链 3. 零拷贝技术3.1 问题背景3.2 零拷贝的核心思想及实现方式 4. sgl在存储行业的应用 1. What is SGL? sgl(Scatter-Gather List)内存传…...

-MAC桢-
MAC桢和IP的关系: 主机A想跨网络和B通信需要IP地址进行路由选择,但一个局域网,比如路由器进行路由选择之前,首先要将数据包发送给路由器B,也就是局域网通信也就是同一个网段的主机进行通信,所以必须通过mac…...

安装:Kali2025+Docker
安装:Kali2025Docker Kali2025安装 直接官网下载WMware版本 https://www.kali.org/get-kali/#kali-virtual-machines 直接打开运行 初始用户密码 kali/kali sudo -i 命令切换到root 更换镜像 切换到其他可用的 Kali Linux 镜像源可能会解决问题,可以使用国内的镜像源&…...

Linux云计算训练营笔记day04[Rocky Linux中的命令:mv、cp、grep(^$)、tar、重定向>和>>]
mv 移动(剪切) 源数据会消失 格式: mv 源文件 目标路径 touch /opt/a.txt 创建文件 mv /opt/a.txt /root 移动文件,没有改名 mkdir gongli 创建目录 mv gongli /opt/ 移动目录,没有改名 mv /opt/gongli tedu 移动目录,改名了 …...

AbMole Olaparib:打破常规,用PARP抑制重塑肿瘤研究
在当今的生物医学研究领域,Olaparib(AZD2281,AbMole,M1664)作为一种重要的PARP(聚腺苷二磷酸核糖聚合酶)抑制剂,受到了广泛关注。Olaparib可干扰 DNA 单链断裂的修复,从而…...
RPC、gRPC和HTTP的区别
RPC 只是一种屏蔽远程过程调用的设计,它与HTTP不是对立的,两者不是一个层面的概念。 RPC底层通信可以使用TCP实现(如Thrift),也可以使用HTTP实现(如gRPC),其本身并无限制。 1. 概念…...

Windows重置网络,刷新缓存
同时按键盘上的【Windows】键和【S】键,弹出搜索框,输入 命令提示符 在“最佳匹配”下的【命令提示符】上右键,点击【以管理员身份运行】 1弹出一个窗口,在光标闪烁的位置,直接输入【netsh winsock reset】࿰…...
Ref是什么
在 React 中,ref 是一种用于访问 DOM 元素或组件实例的机制。它允许你在组件中直接操作 DOM 元素,或者访问子组件的实例。ref 的使用场景非常广泛,包括表单操作、焦点控制、动画等。以下是关于 ref 的详细讲解以及在项目中的常见使用场景。 …...

OpenHarmony平台驱动开发(十),MMC
OpenHarmony平台驱动开发(十) MMC 概述 功能简介 MMC(MultiMedia Card)即多媒体卡,是一种用于固态非易失性存储的小体积大容量的快闪存储卡。 MMC后续泛指一个接口协定(一种卡式)࿰…...

解决IDEA无法运行git的问题
之前git一直没有问题,今天打开就提示我安装git,自然用git去提交新项目也会遇到问题。 我出现问题的原因是:git路径缺失 文件->设置->git 发现git的路径为空,按照实际位置填写即可...

HTTP 响应状态码总结
一、引言 HTTP 响应状态码是超文本传输协议(HTTP)中服务器对客户端(通常是 Web 浏览器)请求的响应指示。这些状态码是三位数字代码,用于告知客户端请求的结果,包括请求是否成功。响应被分为五个类别&#…...
Java求职面试:Spring Boot与微服务的幽默探讨
Java求职者面试:技术与幽默的碰撞 场景概述 在某互联网大厂的面试现场,面试官严肃认真,程序员则是一个搞笑的水货角色。面试者名叫张伟,年龄28岁,硕士学历,拥有5年的Java开发经验。以下是面试的详细过程。…...
lua脚本+Redission实现分布式锁
实现分布式锁最简单的一种方式:基于Redis 不论是本地锁还是分布式锁,核心都在于“互斥”。 在 Redis 中, SETNX 命令是可以帮助我们实现互斥。SETNX 即 set if not exists (对应 Java 中的 setIfAbsent 方法),如果 key 不存在的…...
JVM之jcmd命令详解
jcmd 是 Oracle JDK(Java Development Kit)自 JDK 7 起引入的一个强大的诊断工具,用于与正在运行的 JVM(Java Virtual Machine)实例进行交互。它允许用户执行各种诊断命令,比如线程堆栈分析、堆转储、GC 信…...
Go语言:json 作用和语法
在 Go 语言中,JSON 字段(也称为 JSON Tag)是附加在结构体字段上的元数据,用于控制该字段在 JSON 编码(序列化)和解码(反序列化) 时的行为。它的语法是: type StructName…...
Hive HA配置高可用
Hive的高可用性(HA)通过消除关键组件的单点故障来实现,确保系统在部分故障时仍能正常运行。其基本原理涉及以下核心组件和策略: 1. Hive Metastore 的高可用 多实例部署:部署多个Metastore服务实例,每个实例连接到共享的后端数据库(如MySQL、PostgreSQ…...
Ubuntu 第11章 网络管理_常用的网络配置命令
为了管理网络,Linux提供了许多非常有用的网络管理命令。利用这些命令,一方面可以有效地管理网络,另一方面出现网络故障时,可以快速进行诊断。本节将对Ubuntu提供的网络管理命令进行介绍。 11.2.1 ifconfig命令 关于ifconfig命令&…...

【Qt】Qt 构建系统详解:qmake 入门到项目实战
Qt 构建系统详解:qmake 入门到项目实战 本文将系统介绍 Qt 构建工具 qmake 的用法,并通过一个完整的项目结构示例,帮助你掌握 .pro 文件编写、子项目管理、模块依赖等核心技能。 🧭 一、什么是 qmake? qmake 是 Qt 提…...
Python实例题:pygame开发打飞机游戏
目录 Python实例题 题目 pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本 代码解释 初始化部分: 游戏主循环: 退出部分: 运行思路 注意事项 Python实例题 题目 pygame开发打飞机游戏 pygame-aircraft-game使用 Pygame 开发…...

《Zabbix Proxy分布式监控实战:从安装到配置全解析》
注意:实验所需的zabbix服务器的搭建可参考博客 zabbix 的docker安装_docker安装zabbix-CSDN博客 1.1 实验介绍 1.1.1 实验目的 本实验旨在搭建一个基于Zabbix的监控系统,通过安装和配置Zabbix Proxy、MySQL数据库以及Zabbix Agent,实现分…...

华为配置篇-RSTP/MSTP实验
MSTP 一、简介二、常用命令总结三、实验 一、简介 RSTP(快速生成树协议) RSTP(Rapid Spanning Tree Protocol)是 STP 的改进版本,基于 IEEE 802.1w 标准,核心目标是解决传统 STP 收敛速度慢的问…...

git如何将本地 dev 分支与远程 dev 分支同步
要让本地 dev 分支与远程 dev 分支完全同步(丢弃本地多余的提交记录),可以按照以下步骤操作: 1. 获取远程最新状态 git fetch origin dev # 拉取远程 dev 分支的最新提交,但不会修改本地代码 IDEA中点击fetc…...
使用Python和OpenCV实现实时人脸检测与识别
前言 在计算机视觉领域,人脸检测与识别是两个非常重要的任务。人脸检测是指在图像中定位人脸的位置,而人脸识别则是进一步识别出人脸的身份。随着深度学习的发展,这些任务的准确性和效率都有了显著提升。OpenCV是一个开源的计算机视觉库&…...

Unity基础学习(九)输入系统全解析:鼠标、键盘与轴控制
目录 一、Input类 1. 鼠标输入 2. 键盘输入 3. 默认轴输入 (1) 基础参数 (2)按键绑定参数 (3)输入响应参数 (4)输入类型与设备参数 (5)不同类型轴的参…...