报错#1273是因为SQL文件中使用了目标MySQL版本(如5.7)不支持的排序规则utf8mb4_0900_ai_ci或utf8mb4_unicode_ci,本质是旧版本未预编译该collation,需将文件中所有utf8mb4_0900_ai_ci和utf8mb4_unicode_ci替换为utf8_general_ci,并将独立utf8mb4替换为utf8。
为什么导入时会报 #1273 - Unknown collation 错误
因为你的 sql 文件里写了目标 mysql 不认识的排序规则,比如 utf8mb4_0900_ai_ci 或 utf8mb4_unicode_ci,而你正在用的 mysql 版本(如 5.7 或更早)压根不支持这些名称。这不是语法错,是“字典里没这个词”——mysql 启动时加载了有限的 collation 列表,旧版本没预编译进 utf8mb4_0900_ai_ci,所以一读到就直接报 #1273。
直接改 SQL 文件:替换所有 utf8mb4_* collation
打开备份的 .sql 文件(别用记事本,推荐 VS Code、Sublime 或 Notepad++),做两轮精准替换:
- 把所有
utf8mb4_0900_ai_ci替换为utf8_general_ci(最稳妥兼容 5.7) - 把所有
utf8mb4_unicode_ci替换为utf8_general_ci(WordPress 等老项目常见) - 再全局把
utf8mb4替换为utf8(注意:只换独立词,别误伤字段名如utf8mb4_column;可用正则\butf8mb4\b更安全)
Linux/macOS 下可一行命令搞定:sed -i 's/utf8mb4_0900_ai_ci/utf8_general_ci/g; s/utf8mb4_unicode_ci/utf8_general_ci/g; s/\butf8mb4\b/utf8/g' backup.sql
phpMyAdmin 导入前必须检查的细节
即使改完 SQL,phpMyAdmin 仍可能因配置触发隐式错误:
- 导入页面的 “格式” 必须选
SQL,不能是CSV或其他 - “字符集” 下拉框别手动选
utf8mb4—— 改完文件后这里选utf8更匹配 - 如果文件 > 2MB,phpMyAdmin 默认限制会截断;要么拆分 SQL,要么调大
upload_max_filesize和post_max_size - 导入失败时,错误行号常指向第一个建表语句,但问题可能在前面的
CREATE DATABASE里 —— 检查是否有DEFAULT COLLATE=utf8mb4_0900_ai_ci这种全局设置
绕过 collation 的临时建库法(适合紧急恢复)
如果你无法修改 SQL 文件,或想验证是否纯 collation 问题,可以手动建库跳过声明:
立即学习“PHP免费学习笔记(深入)”;
- 在 phpMyAdmin 中新建数据库,字符集选
utf8,排序规则选utf8_general_ci - 导入时勾选 “忽略插入错误” 和 “继续执行即使有错误”(仅临时用)
- 导入后立刻执行:
ALTER DATABASE `your_db` CHARACTER SET = utf8 COLLATE = utf8_general_ci; - 对每张表再跑一次:
ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
这个方法不解决原始 SQL 的兼容性,但能让你数据先跑起来 —— 要长期维护,还是得回过头来清理 SQL 文件里的 utf8mb4 相关声明,否则每次导出再导入都会重复踩坑。



















