前言
由于市面上还有不少程序不支持MYSQL8.0,所以今天把数据库从8.0降到5.7,但是数据库导入时出现了错误提示:#1273 - Unknown collation: 'utf8mb4_0900_ai_ci'
经过一番搜索发现问题核心在于MySQL版本不兼容导致的排序规则缺失。utf8mb4_0900_ai_ci 是MySQL 8.0+ 独有的排序规则,而我降级的是5.7,所以出现了不识别的错误。
解决方案
修改排序规则
CREATE TABLE `typecho_comments` (
-- 字段定义保持不变 --
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
- 修改点:
COLLATE=utf8mb4_0900_ai_ci → COLLATE=utf8mb4_general_ci
- 优势:
**100%兼容所有MySQL 5.5+版本
保留utf8mb4字符集(支持4字节Emoji/特殊字符)**
- 注意事项:
general_ci与0900_ai_ci排序结果略有差异(如德语ß字符),但对中文无影响
降级字符集(兼容旧系统)
CHARSET=utf8 COLLATE=utf8_general_ci
- 适用场景:MySQL ≤ 5.5 且无Emoji存储需求
- 缺点:
- utf8实际为3字节编码,不支持🤔等4字节字符
- 存储空间利用率低于utf8mb4
版本兼容对照表
MySQL版本 | 推荐字符集配置 | Emoji支持 |
---|---|---|
≥8.0 | utf8mb4 + 0900_ai_ci | ✔️ |
5.5~5.7 | utf8mb4 + general_ci | ✔️ |
≤5.5 | utf8 + general_ci | ✘ |