问题描述
在迁移网站时,从一台服务器使用 phpMyAdmin 导出数据库后,到新服务器使用 phpMyAdmin 导入时出现了下面的错误提示:
#1273 - Unknown collation: 'utf8mb4_0900_ai_ci'
问题分析
经过分析,我们发现,是因为新服务器上所使用的 MySQL 版本要比旧服务器上的 MySQL 版本要低,新服务器上的 MySQL 不包含所需要的数据库排序规则造成的。
这种错误一般出现在从 MySQL 8.0 迁移到 MySQL 5.x 的情况下。
所以,如果可以,我们只需要将新服务器上使用的 MySQL 升级到 8.0 就可以正常导入了。
但是,如果使用的是虚拟主机,或者因为其他原因不能升级的话,我们这里再提供另外一种方式来解决这个问题。
解决方法
我们只需要对备份文件做一些调整,就可以解决这个问题。
使用文本编辑器打开数据库备份文件,将
utf8mb4_0900_ai_ci
替换为:
utf8_general_ci
接着将
utf8mb4
替换为:
utf8
保存文件之后,再重新操作导入就可以。
如果是在 macOS 或者 Linux 环境下操作,可以使用下面的命令快速替换:
sed -i 's/utf8mb4_0900_ai_ci/utf8_general_ci/g' backup.sql
sed -i 's/utf8mb4/utf8/g' backup.sql
执行上面的操作之后,数据库就可以正常导入成功了。