数据库版本

SQL Server 2008
MySQL 5.1.73
MySQL 5.7.25

问题1:

今天帮一个用户导入WordPress数据,根据正常的操作备份最新的网站文件和导出数据库,然后在新服务器中导入网站文件,在数据库中导入数据库文件就可以了,但是看到有错误提示,用户使用的是阿里云的虚拟主机。
错误信息:Unknown character set: 'utf8mb4'

方法1(可以恢复99%,但还是失败):
数据库表编码utf8mb4,这个编码是mysql5.5之后的版本才出来的;
你的错误提示是不识别的字符集;
是因为数据库版本的问题导致的,我看到之前网站MYSQL5.1版本,现在是MYSQL5.5版本,从5.5开始采用的是utf8mb4,而我们的数据库版本还是老的utf8;
解决方法:

我们用sublime打开数据库,然后查找 utf8mb4 替换成 utf8

  • 方法2::
    使用阿里云的数据库传输工具DTS,还是预检查不通过;

  • 方法3:
    Navicat Premium 12 备份了和Navicat Premium 12恢复,报错无法继续;

  • 方法4:
    Navicat Premium 12 同时连接两个数据库,采用数据库传输的方式,时间很长,但是完美恢复成功,美滋滋!


问题2:

https://help.aliyun.com/knowledge_detail/36333.html
虚机主机和轻云服务器,通过DMS连接MySQL数据库,导入数据时报错:Unknown collation: utf8mb4_unicode_ci:


问题原因:
目前虚拟主机配备的MySQL数据库版本是5.1.48,不支持utf8mb4字符集,需要MySQL 5.5以上才支持。
解决方法:
使用记事本打开.sql文件,通过ctrl+h将该文件的中的CHARSET = utf8mb4全部替换成CHARSET = utf8,将COLLATE = utf8mb4_unicode_ci 全部替换为COLLATE = utf8_general_ci,然后重新导入测试,修改之前建议先对源文件做备份。
注意:如果的确需要使用utf8mb4字符集,可以购买使用MySQL 5.5以上版本的RDS服务。
建议先将之前导入的部分数据删除,将数据库清空再操作导入。