[MySQL有点意思]一次服务器迁移

业务调整, 平时用得比较多的一台服务器由于抽离了大部分业务, 把配置降低了许多. 迁移数据库的时候遇到一个和字符集有关的故障.

ERROR 1273 (HY000) at line 93: Unknown collation: 'utf8mb4_unicode_520_ci'

导入 sql 文件重建数据库时候抛出以上错误. 字面意思创建表时使用了不支持的字符集. 由于我们的 sql 文件是从高版本导出, 低版本可能不支持当时构建数据库是使用的默认字符集. 为求方便, 我将 sql 文件中的 utf8mb4_unicode_520_ci 批量替换为了 utf8mb4_unicode_ci.

关于字符集命名规则可以参考官方文档. 文档详细解释了字符集名称中各个关键字的含义以及组合规则. 这里简单介绍几个常用的字符集.

命名规则

字符集名称通常由下划线( _ )连接的单词构成. 诸如 utf8mb4_general_ci, 和 latin1_swedish_ci等. 首词是字符编码, 即前者表述的是 utf8mb4编码规则下衍生出来的字符集, 后者则是 latin1 . (和编码有关的知识本篇不做讨论, 另寻 这篇)