MySQL 报错 #1273 utf8mb4_unicode_520_ci 完整解决技术教程

一、故障说明
1. 报错信息

360截图20260701220226082

最近给服务器重装了系统,从phpmyadmin导入以前备份的数据库文件时提示错误

#1273 – Unknown collation: ‘utf8mb4_unicode_520_ci’

2. 故障原因

  1. 版本不兼容:utf8mb4_unicode_520_ci 是 MySQL 5.6.4 及以上、MariaDB 10.0 + 新增的排序规则;低版本 MySQL(5.5 及以下)不识别该字符集校对规则。
  2. 场景触发:线上高版本数据库导出的 WordPress、网站 SQL 备份,导入本地低版本 phpStudy/XAMPP 集成环境时,建表语句携带该排序规则,直接导入失败。
  3. 截图场景:导入 WordPress 数据库wordp,创建wp_commentmeta表时报错,属于 WP 站点迁移高频问题。

3. 前置环境

  • 问题环境:MySQL 5.5 及更低版本
  • 正常环境:MySQL 5.6.4+/8.0、MariaDB10+
  • 适用场景:网站数据库迁移、本地恢复线上备份、phpMyAdmin 导入 SQL 失败

二、方案一:修改 SQL 备份文件(无需升级数据库,新手首选)
步骤 1导出 / 找到原始 SQL 备份文件
线上服务器、宝塔面板、phpMyAdmin 提前导出完整.sql数据库备份;
将文件复制到本地,用记事本、VS Code、Notepad++ 打开(推荐 Notepad++,大文件不卡顿)。
步骤 2:全局替换不兼容字符集规则
打开替换功能(快捷键 Ctrl+H)
查找内容:utf8mb4_unicode_520_ci
替换为:utf8mb4_unicode_ci
点击全部替换,等待替换完成

   补充兼容兜底方案:若本地 MySQL 版本极低(5.5 以下不支持 utf8mb4)
二次替换:查找 utf8mb4 全部替换为 utf8,校对规则统一改为 utf8_general_ci
步骤 3:统一修改数据库头部字符集声明
在 SQL 文件最顶部找到类似代码:
CREATE DATABASE IF NOT EXISTS `wordp` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
修改为兼容版本:
CREATE DATABASE IF NOT EXISTS `wordp` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
步骤 4:保存文件并重新导入
文件编码保存为 UTF-8,不要带 BOM;
进入 phpMyAdmin,选择数据库,导入修改后的 SQL,报错消失,数据表正常创建。

360截图20260701224040650

 

三、方案二:升级 MySQL 数据库(永久根治,推荐长期使用)

1. 集成环境操作(phpStudy 小皮面板)
打开小皮面板 → 数据库 → 版本切换;
将 MySQL 从 5.5 切换至 MySQL5.7 / MySQL8.0;
重启 MySQL 服务,重新导入原 SQL 文件,原生支持utf8mb4_unicode_520_ci,无需修改备份。
2. 宝塔 Linux 面板操作
软件商店 → MySQL → 更换版本,升级至 5.7+;
备份原有数据库,升级完成后重启数据库服务。
3. 原生 MySQL 手动升级
备份所有数据库,下载 5.7/8.0 安装包,覆盖安装并执行数据库升级命令:
mysql_upgrade -u root -p
四、方案三:导入后批量修改现有表校对规则(仅部分导入成功场景)
若 SQL 导入一半中断,部分表已创建,执行 SQL 批量修改所有表字符集:
进入 phpMyAdmin → 数据库wordp → SQL 执行框,粘贴语句:

-- 修改数据库默认校对规则
ALTER DATABASE `wordp` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 批量单表修改示例(替换表名批量执行)
ALTER TABLE `wp_commentmeta` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `wp_posts` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `wp_options` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

执行完成后,重新导入剩余 SQL 数据。
五、WordPress 配套适配(迁移必做)
数据库修复导入成功后,修改网站根目录wp-config.php字符集配置,避免前台乱码:

define( 'DB_CHARSET', 'utf8mb4' );
// 低版本数据库使用下面一行
// define( 'DB_COLLATE', 'utf8mb4_unicode_ci' );
// 极低版本切换utf8
// define( 'DB_CHARSET', 'utf8' );
// define( 'DB_COLLATE', 'utf8_general_ci' );

六、常见衍生问题排查
替换后出现中文乱码
原因:SQL 文件编码带 BOM、数据库字符集不匹配;解决:文件另存为 UTF-8 无 BOM,统一使用 utf8mb4 字符集。
升级 MySQL 后网站连不上数据库
MySQL8.0 默认加密规则变更,进入 phpMyAdmin 执行:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root密码';
FLUSH PRIVILEGES;

Notepad++ 打开几十 MB 大 SQL 卡顿
使用 VS Code 或数据库工具 Navicat 打开,替换速度更快。
七、教程总结
临时快速解决:修改 SQL 文件全局替换utf8mb4_unicode_520_ciutf8mb4_unicode_ci,适合临时本地调试;
永久解决方案:升级 MySQL 至 5.7 及以上版本,原生支持全部新版排序规则,后续导出导入无需反复修改备份;
WordPress 迁移配套操作:同步修改wp-config.php校对参数,避免页面表情、中文乱码。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容