mysql 导入 mariadb 排序规则错误及解决方案

你在将 MySQL 数据库导入 MariaDB 时遇到了 #1273 错误,核心原因是 MariaDB 不识别 MySQL 8.0 特有的utf8mb4_0900_ai_ci排序规则(collation),导致导入失败。

错误原因说明

utf8mb4_0900_ai_ci是 MySQL 8.0 版本新增的排序规则(基于 Unicode 9.0),而 MariaDB 采用了不同的排序规则体系,并不支持这个规则,因此导入时会提示 “未知的 collation”。

解决方案(按易用性排序)

方案 1:直接替换 SQL 文件中的排序规则(最常用)

  1. 用文本编辑器(Notepad++、VS Code、Sublime 等)打开你从 MySQL 导出的.sql文件;
  2. 全局替换所有内容:
    • 查找:utf8mb4_0900_ai_ci
    • 替换为:utf8mb4_unicode_ci(MariaDB 完全支持,且排序逻辑最接近原规则);
    • 若还出现utf8mb4_0900_as_ci,替换为utf8mb4_unicode_520_ci
  3. 保存文件后,重新导入 MariaDB 即可。

方案 2:Linux/macOS 下用 sed 命令批量替换(无需手动编辑)

如果是 Linux 服务器,可直接用sed命令一键替换(避免手动打开大文件):

# Linux系统
sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' 你的导出文件.sql

# macOS系统(sed语法略有不同)
sed -i '' 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' 你的导出文件.sql

方案 3:重新导出 MySQL 数据(预防式解决)

如果还能重新从 MySQL 导出数据,可在导出时直接指定兼容 MariaDB 的排序规则,从源头避免问题:

# 导出命令(替换用户名、数据库名、导出文件名)
mysqldump -u 你的MySQL用户名 -p --collation=utf8mb4_unicode_ci 你的数据库名 > 兼容版导出文件.sql
执行后输入 MySQL 密码,生成的 SQL 文件会直接使用 MariaDB 兼容的排序规则。

验证效果

修改后的 SQL 文件重新导入 MariaDB 时,不会再出现#1273 - 未知的collation错误,数据可正常导入。

总结

  1. 报错核心原因:utf8mb4_0900_ai_ci是 MySQL 8.0 特有规则,MariaDB 不支持;
  2. 关键解决动作:将 SQL 文件中的utf8mb4_0900_ai_ci替换为utf8mb4_unicode_ci
  3. 替换方式:手动编辑文件、Linux/macOS 用 sed 命令、或重新导出时指定兼容规则。
© 版权声明

相关文章

暂无评论

none
暂无评论...