深入理解 MySQL 中的 SQL_MODE

MySQL的sql_mode模式说明 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题.sql model 常用来解决下面几类问题。 阅读详情
AI摘要

本文介绍了 MySQL 数据库中 SQL_MODE 系统变量,它用于控制 SQL 语句处理和数据校验。阐述了 MySQL 5.7 和 8.0 版本的默认 SQL_MODE 值,常见设置模式,如 ANSI、STRICT_TRANS_TABLES 等。重点讲解了 SQL_MODE 在数据迁移中的用法,包括迁移前调整、过程中问题处理及迁移后兼容性测试。

SQL_MODE 是 MySQL 数据库中的一个系统变量,用于控制 MySQL 如何处理 SQL 语句和数据校验。它可以看作是一组约束和规范,确保数据的准确性、完整性和一致性。例如,可以控制如何处理无效日期、是否允许插入不完整的记录、是否区分大小写等。

作者:许祥,爱可生 MySQL DBA 团队成员,负责处理客户 MySQL 及我司自研 DMP 平台日常运维中的问题。

爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

本文约 2600 字,预计阅读需要 8 分钟。

什么是 SQL_MODE?

SQL_MODE 是 MySQL 数据库中的一个系统变量,用于控制 MySQL 如何处理 SQL 语句和数据校验。它可以看作是一组约束和规范,确保数据的准确性、完整性和一致性。例如,可以控制如何处理无效日期、是否允许插入不完整的记录、是否区分大小写等。

在 MySQL 中,通过设置 SQL_MODE 可以解决下面几类问题:

  1. 完成不同严格程度的数据校验,有效地保障数据准确性。
  2. 保证大多数 SQL 符合标准的 SQL 语法,这样应用在不同数据库之间进行迁移时,则不需要对业务 SQL 进行较大的修改。
  3. 在不同数据库之间进行数据迁移之前,通过设置 SQL_MODE 可以使 MySQL 上的数据更方便地迁移到目标数据库中。

通过阅读本文,你将收获以下知识点:

  1. MySQL 不同版本的默认 SQL_MODE 值
  2. 常用的 SQL_MODE 设置及其含义
  3. SQL_MODE 在数据迁移中的关键作用

SQL_MODE 有哪些值?

MySQL 5.7 的默认值和描述

  • ONLY_FULL_GROUP_BY:在 GROUP BY 子句中没有出现的列,若出现在 SELECT 列表、HAVING 条件、ORDER BY 条件中时会被拒绝。

  • STRICT_TRANS_TABLES:非法日期,超过字段长度的值插入时,直接报错,拒绝执行。例如,如果向一个整数列插入超出范围的值,将触发错误。

  • NO_ZERO_DATE:针对日期 '0000-00-00',执行逻辑如下:

    1. disable:可以正常插入,没有警告。

    2. enable:可以正常插入,有警告。

      如果 SQL_MODE 中包含 STRICT TRANS TABLES,则日期被拒绝写入,但可以通过加 IGNORE 关键字写入 '0000-00-00',有警告。

  • NO_ZERO_IN_DATE:日期中针对月份和日期部分,如果为0,比如 '2024-00-00',有不同的执行逻辑:

    1. disable:可以正常插入,实际插入值还是 '2024-00-00' 没有警告。

    2. enable:可以正常插入,有警告。

      如果 SQL_MODE 中包含STRICT TRANS TABLES 则日期被拒绝写入,但可以通过加 IGNORE 关键字写入 '0000-00-00'。

  • ERROR_FOR_DIVISION_BY_ZERO:除数为 0(包括 MOD(N,0)),执行逻辑如下:

    1. disable:插入 NULL,没有警告。

    2. enable:插入 NULL,有警告。

      如果 SQL_MODE 中包含 STRICTTRANSTABLES,则数据被拒绝写入,但可以通过加 IGNORE 关键字写入 NULL,有警告。

  • NO_AUTO_CREATE_USER:防止使用不带密码子句的 GRANT 语句来创建一个用户。

  • NO_ENGINE_SUBSTITUTION:执行 CREATE TABLE 或者 ALTER TABLE 语句时,如果指定的存储引擎不可用,MySQL 会抛出错误,而不是使用默认存储引擎。

    1. disable:CREATE TABLE 会自动替换后执行,ALTER TABLE 不会执行,两个命令都有警告。
    2. enable:两个命令直接报错。

MySQL 8.0 的默认值和描述

  • STRICT_TRANS_TABLES:同 MySQL 5.7,确保插入或更新的数据严格符合表的定义。

  • NO_ZERO_DATE:同 MySQL 5.7,禁止日期字段为 '0000-00-00',要求输入有效的日期。

  • NO_ZERO_IN_DATE:同 MySQL 5.7,禁止日期或日期时间字段中的月份或日部分为零。

  • ERROR_FOR_DIVISION_BY_ZERO:同 MySQL 5.7,当除以零时,MySQL 将抛出错误,而不是返回 NULL。

  • NO_AUTO_CREATE_USER:同 MySQL 5.7,禁止通过 GRANT 语句自动创建用户。

  • NO_ENGINE_SUBSTITUTION:同 MySQL 5.7,确保指定的存储引擎必须存在,不会自动替换。

查询 SQL_MODE

-- MySQL 5.7
mysql> show variables like 'sql_mode';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                                                                     |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| 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 |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

-- MySQL 8.0
mysql> show variables like 'sql_mode';
+---------------+-----------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                                                 |
+---------------+-----------------------------------------------------------------------------------------------------------------------+
| sql_mode      | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+---------------+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

SQL_MODE 常见设置模式

SQL_MODE 的常见设置模式是一组可以选择的选项,这些选项可以根据需要组合使用,以改变数据库的行为。以下是一些常见的模式及其含义:

  • ANSI 模式:宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报 WARNING 警告。

  • STRICT_TRANS_TABLES 模式:严格模式,进行数据的严格校验,错误数据不能插入,报 ERROR 错误。只对支持事务的表有效。

  • STRICT_ALL_TABLES 模式:严格模式,进行数据的严格校验,错误数据不能插入,报 ERROR 错误。对所有表都有效。

  • TRADITIONAL 模式:严格模式,当向 MySQL 数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报 ERROR 错误。用于事务时,会进行事务的回滚。

在下面的例子中,观察一下非法日期“2007-04-31”(因为 4 月没有 31 日)在不同 SQL_MODE 下能否正确插入。


mysql> select @@session.sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@session.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 |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> set session sql_mode='ANSI';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> select @@session.sql_mode;
+--------------------------------------------------------------------------------+
| @@session.sql_mode                                                             |
+--------------------------------------------------------------------------------+
| REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI |
+--------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>  create table t_sql_mode_ansi(d datetime);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into t_sql_mode_ansi values('2007-04-31');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * from t_sql_mode_ansi;
+---------------------+
| d                   |
+---------------------+
| 0000-00-00 00:00:00 |
+---------------------+
1 row in set (0.00 sec)

mysql> set session sql_mode='TRADITIONAL';
Query OK, 0 rows affected, 1 warning (0.00 sec)

 mysql> select @@session.sql_mode;
+------------------------------------------------------------------------------------------------------------------------------------------------------+
| @@session.sql_mode                                                                                                                                   |
+------------------------------------------------------------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> insert into t_sql_mode_ansi values('2007-04-31');
ERROR 1292 (22007): Incorrect datetime value: '2007-04-31' for column 'd' at row 1

很显然,在 ANSI 模式下,非法日期可以插人,但是插入值却变为“0000-00-00 00:00:00”并且系统给出了 WARNING;而在 TRADITIONAL 模式下,会直接提示日期非法,拒绝插入。STRICT_TRANS_TABLES 模式和 STRICT_ALL_TABLES 模式同样如此。

SQL_MODE 在迁移中的用法

当从 MySQL 迁移到其他异构数据库时,SQL_MODE 的配置和调整在数据迁移过程中起着关键作用。 由于不同数据库系统在 SQL 标准、数据类型处理、错误处理等方面存在差异,正确使用 SQL_MODE 可以帮助确保迁移过程中数据的完整性和一致性。

SQL_MODE 是 MySQL 的一个配置选项,控制着 SQL 语句的解析和执行方式。

例如,SQL_MODE 可以影响 NULL 值的处理、日期格式的验证、GROUP BY 的严格性等。当迁移数据到其他数据库时,目标数据库可能不支持或以不同方式处理这些规则,因此在迁移前需要仔细配置和测试 SQL_MODE。

1. SQL_MODE 在迁移前的调整

在将 MySQL 数据库迁移到其他数据库之前,可以考虑以下步骤来调整 SQL_MODE,以减少迁移时可能出现的兼容性问题:

  • 禁用严格模式:在迁移前,禁用 MySQL 中的严格模式(如 STRICT_TRANS_TABLES)可以帮助识别哪些数据在当前配置下可能会在目标数据库中引发问题。通过禁用严格模式,可以提前发现并处理不兼容的数据。
SET GLOBAL SQL_MODE ='';
  • 禁用 ONLY_FULL_GROUP_BY:MySQL 的 ONLY_FULL_GROUP_BY 模式要求所有非聚合列必须在 GROUP BY 子句中,这在其他数据库中可能不是必需的。禁用该模式可以确保 SQL 查询在目标数据库中能正确执行。
  • 启用宽松模式:通过设置较为宽松的 SQL_MODE(如禁用 NO_ZERO_DATE、NO_ZERO_IN_DATE),可以让 MySQL 接受一些可能在目标数据库中允许的数据格式,并确保这些数据能被顺利迁移。

2. 在迁移过程中处理 SQL_MODE 相关问题

  • 日期和时间处理:一些数据库系统对日期和时间有更严格的要求。例如,0000-00-00 这样的日期在 MySQL 中可能是合法的,但在其他数据库中会引发错误。在迁移前,需要确保数据格式符合目标数据库的要求,或者通过 SQL 脚本清理这些数据。
  • 空字符串与 NULL 的处理:在 MySQL 中,空字符串和 NULL 可能在一些情况下被视为相等,而在其他数据库中并非如此。迁移前,应该明确这些字段的逻辑,并在必要时进行转换。
  • 标识符大小写:MySQL 对标识符的大小写敏感性可能与目标数据库不同。在迁移前,使用 SQL_MODE 的 ANSI_QUOTES 选项可以确保标识符的引用方式符合 SQL 标准,并减少在目标数据库中的兼容性问题。

3. 迁移后的兼容性测试

完成数据迁移后,需要在目标数据库中进行全面的兼容性测试,以确保迁移后的数据和应用程序能正常运行。重点测试的领域包括:

  • 查询结果的准确性:检查涉及 GROUP BY、聚合函数、日期处理等 SQL 查询是否在目标数据库中返回预期结果
  • 数据完整性:确保迁移后的数据没有丢失、截断或被错误转换。
  • 性能:有些 SQL_MODE 设置可能影响查询性能,迁移后需要在目标数据库中优化相关查询。

4. 小结

在从 MySQL 迁移到其他数据库时,合理调整 SQL_MODE 可以显著减少迁移过程中的兼容性问题。通过禁用严格模式、调整日期和空值处理、确保标识符的一致性,以及进行全面的测试,可以确保迁移后的数据和应用程序在新的数据库环境中稳定运行。

5. 迁移过程中需要注意

在数据迁移过程中,可以设置 SQL_MODE 为 NO_TABLE_OPTIONS 模式。这样将去掉 SHOW CREATE TABLE 中的 ENGINE 关键字,获得通用的建表脚本。

测试示例如下:

mysql> show create table test\G
*************************** 1. row ***************************
       Table: test
Create Table: CREATE TABLE `test` (
  `ename` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `sal` decimal(10,2) DEFAULT NULL,
  `hiredate` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
1 row in set (0.00 sec)
mysql>
mysql> set session sql_mode='NO_TABLE_OPTIONS';
Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql>
mysql> show create table test\G
*************************** 1. row ***************************
       Table: test
Create Table: CREATE TABLE `test` (
  `ename` varchar(10) COLLATE utf8mb4_bin DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `sal` decimal(10,2) DEFAULT NULL,
  `hiredate` date DEFAULT NULL
)
1 row in set (0.00 sec)

总结

  1. SQL_MODE 的“严格模式”为 MySQL 提供了很好的数据校验功能,保证了数据的准确性,TRADITIONAL 和 STRICT_TRANS_TABLES 是常用的两种严格模式,要注意两者的区别。
  2. SQL_MODE 的多种模式可以灵活组合,组合后的模式可以更好地满足应用程序的需求。尤其在数据迁移中,SQL_MODE 的使用更为重要。

更多技术文章,请访问:https://opensource.actionsky.com/

关于 SQLE

SQLE 是一款全方位的 SQL 质量管理平台,覆盖开发至生产环境的 SQL 审核和管理。支持主流的开源、商业、国产数据库,为开发和运维提供流程自动化能力,提升上线效率,提高数据质量。

✨ Github:https://github.com/actiontech/sqle

📚 文档:https://actiontech.github.io/sqle-docs/

💻 官网:https://opensource.actionsky.com/sqle/

👥 微信群:请添加小助手加入 ActionOpenSource

🔗 商业支持:https://www.actionsky.com/sqle

深入理解MySQL中的ONLY_FULL_GROUP_BY 阅读详情

相关推荐

从MySQL迁移到人大金仓KingbaseES,你的SQL脚本为啥报错?可能是sql_mode在作怪

本文深入分析了从MySQL迁移到人大金仓KingbaseES时,由于sql_mode参数差异导致的字符串截断等常见问题。通过对比MySQL与KingbaseES的默认行为差异,提供了配置KingbaseES模拟MySQL严格模式的详细方案,并给出迁移过程中的最佳实践建议,帮助开发者顺利完成数据库迁移工作。

weixin_31364787的博客 258

Mysql中sql_mode使用详解

一、Sql_mode是什么? Sql_mode是一组mysql的语法校验规则,定义了mysql应该支持的sql语法、数据校验等。 二、如何查看当前sql_mode配置? 方法一:select @@sql_mode; 方法二:select @@SESSION.sql_mode; 方法三:select @@GLOBAL.sql_mode; 三、如何设置sql_mode? 1、通过命令设置 SET sql_mode = ''; SET SESSION sql_mode = ''; SE

firesea的专栏 2万+

【项目实战】MySQL的SQL_MODE数据模式入门介绍

sql_mode可以设置多种模式,每个模式都代表一种SQL行为。以下是常见SQL_MODE设置及其作用,除了以下模式外,还有许多其他的模式等。详细的文档可以在MySQL官方文档中找到。

奶爸的编程之路,也就一周冷个三天 1870

【MySQL】sql_mode 模式

MySQL 的 sql_mode 分两种模式,宽松模式与严格模式。在 MySQL 5.7 版本之前,MySQL 服务的默认模式一直是宽松模式,从版本 5.7 开始,MySQL 服务默认模式为严格模式。

zzd13546036394的博客 5084

FPGA—DHT11数字温湿度传感器

1. DH1T11温湿度传感器与DS18B20温湿度传感器非常类似,都是严格按照时序要求写代码。建议可以比较学习。2. 显示温度与湿度部分的数据处理,采用 X10 进行在数码管上的移一位显示,配合了数码管小数部分的显示特点又区分了温度与湿度。3. 程序是按照一个接一个状态及顺序跳转的,建议使用状态机。说明:本人使用的是野火家Xilinx Spartan6系列开发板及配套教程,以上内容如有疑惑或错误欢迎评论区指出,或者移步B站观看野火家视频教程。

m0_72885897的博客 4779

【深度解析】AURIX TC387 UCB Flash架构与避坑指南(第一篇)

摘要:UCB(用户配置块)是AURIX TC3xx芯片启动与安全的关键配置区域,位于DFLASH0存储区。每个512字节的UCB包含启动模式、安全设置等关键参数,并通过强制CRC32校验确保完整性。UCB分为启动头(UCB_BMHD)、安全配置(UCB_ORIG)及其备份(UCB_COPY)三种主要类型。不同于常规Flash,UCB具有自动擦除特性,错误配置可能导致芯片永久锁死。开发中应谨慎修改UCB,必须同时编程原始和备份版本,并确保正确的CRC校验。后续文章将详细介绍UCB编程方法和调试技巧。

2511_94612429的博客 1231

深入理解MySQL中的SQL_MODE系统参数作用

点击标题下「蓝色微信名」可快速关注MySQL的sql_mode参数和开发的关系比较紧密,技术社群的这篇文章《技术分享 | 深入理解 MySQL 中的 SQL_MODE》给我们讲解了这个参数相关的知识,可以学习了解。1什么是 SQL_MODE?SQL_MODE 是 MySQL 数据库中的一个系统变量,用于控制 MySQL 如何处理 SQL 语句和数据校验。它可以看作是一组约束和规范,确保数据的准确性...

bisal的专栏 598

语音测试(二)音频标注(praat)

通过点击红线下方的圆点进行区域划分,在区域中标注所属的类别。按住Alt+Backspace 键取消蓝色线条。

beishida123的博客 3733

MySql查询错误:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY...

MySql报错原因解决方案sql_mode常用参数 原因 报错信息: [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 incom

Stargazer(仰望星空)的博客 3012

STM32G474多通道ADC电压采集:软件触发与单次转换实战

本文详细介绍了STM32G474多通道ADC电压采集的实战方法,重点讲解了软件触发与单次转换的实现技巧。通过硬件设计、HAL库配置、多通道轮询采集及数据处理等环节的详细解析,帮助开发者高效完成精确电压采集任务。文章还提供了常见问题调试技巧和性能优化建议,适用于需要高精度电压监测的嵌入式应用场景。

weixin_28720767的博客 462

别再只调颜色阈值了!优化K210色块追踪性能的5个关键参数与实战技巧

本文深入探讨了K210色块追踪性能优化的五大核心策略,包括图像预处理参数精细调控、find_blobs参数进阶配置、运动控制算法升级、硬件时序优化以及可视化调试系统构建。通过实战技巧和参数调整方法,帮助开发者提升K210在色块追踪项目中的识别稳定性和响应速度,适用于云台追踪等应用场景。

weixin_42531588的博客 225

MySQL(一):数据类型,mybatis的原理实现过程

CREATE TABLE t( a INT UNSIGNED, b INT UNSIGNED )ENGINE=INNODB; INSERT INTO t SELECT 1,2; SELECT * FROM t; SELECT a-b FROM t; 执行最后一条select语句的结果是 其实结果在不同的系统可能还会不一样 可以是 − 1 -1 −1,可以是一个很大的正值,也可能会报错,报错就是如上,out of range超出了范围。 原因其实是,这里 1 − 2 1-2 1−2变成十六进制的结果是 0

m0_64867003的博客 452

StarWind V2V Converter v9 虚拟磁盘转换工具使用教程 (转)

StarWind V2V Converter v9.0.1.268 是一款免费的虚拟磁盘转换工具,支持不同管理程序间的虚拟机镜像格式转换,包括VMDK、VHD/VHDX、IMG和QCOW2等格式。该工具具有窗口修复模式、零拷贝转换和管理程序切换等特色功能,能够轻松实现物理机到虚拟机的转换,并兼容主流管理程序如Hyper-V、ESXi等。使用教程详细介绍了从本地文件选择到格式转换的完整操作流程,转换过程简单高效且不影响原虚拟磁盘数据。

hsh的专栏 1481

MySQL里面的时间类型 datetime,date,timestamp,time

一、基本如果要让这些字段存放诸如"2009-00-00"或"2009-11-31"之类的值,那么要为MySQL指 定特别的SQL_MODE。如果没有使用NO_ZERO_DATE的SQL_MODE,那么MySQL允许存放"0000...

clj2015的博客 193

【Android面试八股文】Android Application为什么是单例?

这道题相对简单,就是考察大家是否了解application的创建流程。的实例,它用来存储和处理整个全局变量的一些事情,它同时还是一个。为空的时候,才会创建,从而保证了它是一个单例对象。一样有自己的生命周期,但是它并没有那么复杂,因为。对象的创建过程,找出它为什么是单例的原因。全局进行一些配置,比如配置插件。的时候才会创建,所以说可以在。凭什么是单例,我们查看下。启动的时候都会创建一个。是怎么一步步创建的。是一个单例,即每一个。

字节卷动 531

一种独特机理驱动的化学反应分类器详解

代码位置第 47-300+ 行// atom_494: 硫原子,度数=2,化合价=2,无H,无电荷!// atom_35: 氧原子,度数=1,1个H,无电荷// atom_347: 氧原子,度数=2,无H,无电荷!→atom_494()[OD1h1+0]→atom_35()→atom_347()特性传统方法(MCS)NameRXN(机理驱动)匹配策略最大公共子结构原子类型模式 + 操作码时间复杂度O(n) - 线性扫描机理理解无内置化学机理原子映射需额外计算自动推导准确性结构相似。

ASKCOS博客 156

MySQL错误处理

[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 G...

JunChow 204

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python连接pymysql主机目标无响应_43 pythonl操作pymysql

# 参数列表:## 参数 描述# host 数据库服务器地址,默认 localhost# user 用户名,默认为当前程序运行用户# password 登录密码,默认为空字符串# database 默认操作的数据库# port 数据库端口,默认为 3306# bind_address 当客户端有多个网络接口时,指定连接到主机的接口。参数可以是主机名或IP地址。# unix_socket un...

weixin_39841640的博客 97

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MySQL sql_mode 完全指南:从入门到精通

sql_mode是MySQL中语法校验、数据校验、行为兼容的核心配置。SQL语法解析规则:支持哪些语法特性数据有效性校验标准:哪些数据是合法的与其他数据库的兼容策略:如何模拟Oracle、SQL Server的行为组合模式包含的模式值适用场景ANSI兼容SQL标准,适合多数据库迁移传统严格模式,模拟严格的数据库行为仅校验日期格式,不校验日期有效性兼容旧系统的非法日期数据-- 一键启用ANSI兼容模式-- 一键启用传统严格模式-- 基于组合模式自定义。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1666

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深入理解 SQL_MODE 之 ANSI_QUOTES

是sql_mode中一个重要的选项,它使得 MySQL 的 SQL 语法更加符合 ANSI SQL 标准。通过启用,你可以编写更加标准和一致的 SQL 语句,但也需要注意兼容性和性能问题。希望本文能帮助你更好地理解和使用,提升数据库开发的质量和效率。如果你有任何疑问或建议,欢迎留言交流!

weixin_43841461的博客 1334

从MySQL迁移到Kingbase8:深入解析GROUP BY语法差异与sql_mode参数实战

本文深入解析了从MySQL迁移到Kingbase8时遇到的GROUP BY语法差异问题,特别是sql_mode参数中的ONLY_FULL_GROUP_BY选项对SQL执行的影响。通过实战案例展示了三种解决KSQLException报错的方法,包括修改SQL语句、调整sql_mode参数以及优化MyBatis映射文件,并提供了迁移最佳实践与注意事项,帮助开发者顺利完成数据库迁移。

weixin_33717117的博客 464

从MySQL迁移到Kingbase8:深入解析GROUP BY语法差异与sql_mode参数调优

本文深入解析了从MySQL迁移到Kingbase8时遇到的GROUP BY语法差异问题,详细介绍了sql_mode参数的调优方法。通过对比MySQL的宽容模式与Kingbase8的严格模式,提供了临时会话级修改、永久全局配置及代码层适配三种解决方案,帮助开发者高效完成数据库迁移并避免潜在问题。

weixin_30301449的博客 464

深入理解MySQL中的MVCC:从概念到底层实现

MySQL的MVCC机制通过多版本并发控制实现高效读写隔离,核心依赖隐藏列(DB_TRX_ID、DB_ROLL_PTR)、undo日志版本链和Read View可见性判断。MVCC支持事务隔离级别,解决脏读、不可重复读问题,实现读写不冲突,显著提升并发性能。不同隔离级别下行为不同:RC每次查询生成新Read View,RR首次查询固定Read View。理解MVCC有助于优化SQL和事务设计,是高并发场景性能调优的关键基础。

2301_80017072的博客 1942

MySQL的33道sql语句练习题

MySQL的33道练习题: 三张表作为测试数据。 部门表dept:deptno(部门编号), dname(部门名称), loc(部门位置) 员工表emp:empno(员工编号), ename(姓名), job(岗位), mgr(领导编号), hiredate(雇用日期), sal(月薪), comm(奖金), deptno(部门编号) 工资等级表salgrade:grade(等级), lowsal(最低工资), highsal(最高工资) 下面给出测试的数据库脚本内容: /* SQLyog Communit

pipizhen_的博客 608

别再只改sql_mode了!Kingbase8中GROUP BY报错的三种根治方案与性能考量

本文深入探讨了Kingbase8中GROUP BY报错的根本原因,并提供了三种根治方案:SQL语句重构、表设计与索引优化以及合理使用sql_mode。通过详细分析每种方案的性能考量与适用场景,帮助开发者从MySQL迁移到Kingbase8时避免常见错误,同时提升查询效率与数据准确性。

weixin_30825581的博客 401
上一篇: DBA 的 AI 助手 | MySQL 清理 undo log 居然用了 10 个小时?
下一篇: 问 MySQL 的 RR 隔离级别插入记录,唯一索引冲突加什么锁?
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值