MariaDB 10.1 表分区功能与 MySQL 5.6 兼容性差异导致报错 1505?

文章导读
根据 2026 年 3 月 13 日更新的兼容性说明,MariaDB 10.1 与 MySQL 5.6 在数据文件和表定义文件上二进制兼容,但关于报错 1505 的具体分区表问题,目前公开资料中未找到具体数据。
📋 目录
  1. 原因分析
  2. 解决方案
  3. 注意事项
  4. 参考来源
A A

根据 2026 年 3 月 13 日更新的兼容性说明,MariaDB 10.1 与 MySQL 5.6 在数据文件和表定义文件上二进制兼容,但关于报错 1505 的具体分区表问题,目前公开资料中未找到具体数据。

原因分析

MariaDB 10.1 与 MySQL 5.6 存在多项已确认的兼容性差异。根据 2025 年 6 月 19 日的 TXSQL MariaDB 内核兼容性说明,主要差异包括:1) GTID 不兼容,MySQL 5.6 不能作为 MariaDB 的从库;2) Binlog 默认配置不同,MariaDB 默认采用 row 格式,而原生 MySQL 5.6 默认采用 statement 格式;3) 默认值推导机制不同,例如 varchar(N) 类型字段,MySQL 5.5/5.6 的默认值是空串'',而 MariaDB 10.1 没有默认值。

根据 2021 年 3 月 23 日的资料,MariaDB 10.0 与 MySQL 5.6 的 low-level temporal format 用于 TIME、DATETIME 和 TIMESTAMP 是不同的,这可能导致分区表在时间字段上的兼容性问题。在 MariaDB 10.1 中,默认使用 MySQL 的实现方式,可通过 mysql56_temporal_format 变量控制。

解决方案

方案一:检查并调整 Binlog 格式

根据 2024 年 1 月 11 日的兼容性说明,MariaDB 的 Binlog 默认采用 row 格式,而原生 MySQL 5.6 默认采用 statement 格式。如需兼容,可在 MariaDB 配置文件中添加:

binlog_format=STATEMENT

或在 MySQL 5.6 端配置:

MariaDB 10.1 表分区功能与 MySQL 5.6 兼容性差异导致报错 1505?

binlog_format=ROW

方案二:处理默认值推导差异

根据 2025 年 6 月 19 日的示例,创建表时需注意默认值差异。对于 varchar 列,MySQL 5.5/5.6 推导为空串'',MariaDB 10.1 推导为无默认值。对于 decimal 列,MySQL 5.5/5.6 推导为 0.00,MariaDB 10.1 推导为 NULL。建议在建表语句中显式指定 DEFAULT 值:

CREATE TABLE t1 (f1 varchar(1) DEFAULT '', f2 decimal(10,2) DEFAULT 0.00)

方案三:配置 temporal format 兼容性

根据 2020 年 8 月 20 日的资料,在 MariaDB 10.1 中可通过设置 mysql56_temporal_format 变量来使用 MySQL 5.6 的时间格式实现,确保分区表在时间字段上的兼容性。

注意事项

根据 2021 年 3 月 23 日的用户反馈,以下问题需特别注意:1) MariaDB 10.0 不支持 MySQL Memcached 插件,启动时会报找不到 libmemcached.so 库的报错信息;2) 用户以 SHA256 算法创建的 MySQL 密码不能用于 MariaDB 10.0,因为 MariaDB 没有 sha256_password 插件;3) MariaDB 10.0 不支持 delayed replication(MDEV-7145),该功能在 MariaDB 10.2.5 才实现;4) MySQL 5.6 默认开启 performance schema,而 MariaDB 10.0 默认关闭,可通过--performance-schema 参数开启。

MariaDB 10.1 表分区功能与 MySQL 5.6 兼容性差异导致报错 1505?

根据 2020 年 8 月 20 日的资料,MariaDB 10.0 multi-source replication 不被 MySQL 5.6 支持,可通过配置变量 slave-ddl-exec-mode 来指定 CREATE TABLE 和 DROP TABLE 的复制方式。

参考来源

来源:MariaDB 官方知识库 - MariaDB 与 MySQL5.6 兼容性说明(2026 年 3 月 13 日更新)

来源:TXSQL 文档 - MariaDB 内核与 MySQL 5.6 兼容性说明(2025 年 6 月 19 日)

来源:MariaDB Knowledge Base - MariaDB 10.0 与 MySQL 5.6 的不兼容性(2021 年 3 月 23 日)

来源:阿里云开发者社区 - MariaDB 新版本实力逆袭(2017 年 5 月 11 日)