SuperAPI AI 工具集

mariadb-core-defaults-and-sql-modes

数据与分析

查看项目

更新于 10-15 22:18

技能介绍

用途:排查“昨天还能跑的查询今天失败”、LTS 版本间升级、从 MySQL 迁移、新建 MariaDB 实例时的默认值与 sql_mode 差异问题。

主要能力:梳理各版本默认 sql_mode(10.1.6 及更早为空;10.1.7–10.2.3 为 NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER;10.2.4 起含 STRICT_TRANS_TABLES 等);说明字符集默认变化(11.6 起 character_set_server 由 latin1 改为 utf8mb4,11.5 起 utf8mb4 默认排序规则改为 utf8mb4_uca1400_ai_ci);列出 binlog_format 默认 MIXED、sync_binlog 默认 0、innodb_flush_log_at_trx_commit 默认 1、default_storage_engine 默认 InnoDB、lower_case_table_names 平台差异、默认认证插件仍为 mysql_native_password 等易踩坑项。

使用方式:生产环境在 [mysqld] 显式固定 sql_mode、字符集与排序规则、存储引擎、持久化与 binlog 参数;升级或迁移前先比对源库 @@sql_mode 并原样固定;修改选项文件后需重启 mariadb,SET GLOBAL 不会持久化。可用 SELECT @@version, @@sql_mode, @@character_set_server, @@collation_server, @@binlog_format, @@sync_binlog; 校验实际生效值。

限制:sql_mode 仅有 global 与 session 两个作用域,无库级或表级设置;存储程序与视图在 CREATE 时锁定当时的 sql_mode,后续全局修改不影响,需 DROP 重建;lower_case_table_names 在 mariadb-install-db 后不可更改;服务器默认只影响新表,已有表需 ALTER TABLE ... CONVERT TO CHARACTER SET 转换。具体版本行为以官方发布说明为准。