You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地MySQL5.7的WordPress数据库导入MariaDB5.5.68报SQL语法错误

报错根因
  • 核心是两端数据库版本存在语法特性差异:本地使用的MySQL 5.7支持时间类型精度定义语法,目标端的MariaDB 5.5.68属于老旧维护版本,不支持该高版本特性,解析SQL时直接失败。
  • 具体触发点在created_at字段的定义行:MariaDB 5.5不支持timestamp(0)、CURRENT_TIMESTAMP(0)这类带精度括号的写法,该语法是MySQL 5.6版本后才引入的,低版本数据库读到括号中的精度参数时无法识别,直接抛出第6行附近的语法错误。
  • 该SQL片段里还有两个潜在兼容点,修复完时间精度问题如果还报错可以一并处理:一是部分低版本MariaDB不支持在主键定义末尾加USING BTREE后缀,二是ROW_FORMAT = Dynamic的定义在MariaDB 5.5的MyISAM引擎下也可能触发兼容报错。
修复方案

方案1:直接修改已导出的SQL文件(适合已经拿到备份文件的场景)

  • 用文本编辑器打开导出的.sql备份文件,做全局替换:
    1. 将所有timestamp(0)替换为timestamp
    2. 将所有CURRENT_TIMESTAMP(0)替换为CURRENT_TIMESTAMP
  • 替换完成后先尝试导入,如果还报USING BTREE相关错误,就全局删除主键定义后多余的USING BTREE字段;如果报ROW_FORMAT相关错误,全局删除建表语句末尾的 ROW_FORMAT = Dynamic片段即可。
  • 示例中ej_wpmailsmtp_debug_events表修改后可正常执行的建表语句如下:
DROP TABLE IF EXISTS `ej_wpmailsmtp_debug_events`;
CREATE TABLE `ej_wpmailsmtp_debug_events`  (
  `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL,
  `initiator` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL,
  `event_type` tinyint(3) UNSIGNED NOT NULL DEFAULT 0,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

方案2:导出时开启兼容模式(适合还未生成备份文件的场景)

  • 重新从本地MySQL 5.7导出数据库时,提前配置兼容低版本的规则,避免手动改文件的麻烦:
    • 用mysqldump命令导出时,追加参数--compatible=mysql5,导出的SQL会自动剥离MySQL 5.5以上版本的特有语法,可直接导入MariaDB 5.5
    • 用phpMyAdmin等可视化工具导出时,选择自定义导出模式,在兼容性选项中选择适配MySQL 5版本,导出的文件无需额外修改即可正常导入。

方案3:升级目标端数据库版本(长期推荐方案)

  • MariaDB 5.5早已停止官方安全维护,WordPress核心、各类主题和插件后续都会逐步提升数据库最低版本要求,长期运行站点建议直接将目标服务器的MariaDB升级到10.3及以上的长期支持版本,后续站点迁移、功能升级都不会再遇到这类低版本兼容问题。

内容的提问来源于stack exchange,提问作者itdoesntmatter1222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 23:45:57