收到BAE发的邮件,想测试一下 BAE 的性能,在导入数据库的时候出现了#1273 – Unknown collation: ‘utf8mb4_unicode_ci’ 的错误,从字面意思上看是数据库不支持 utf8mb4 编码,于是发了工单,BAE 客服是这样回复的。
–尊敬的用户您好! BAE 的数据库是不支持 utf8mb4 编码的,所以导入时会出现该错误,建议您在导出 sql 文件的时候不使用 utf8mb4 编码,推荐 utf8 编码。感谢您对开放云的支持,祝您生活愉快。
WordPress4.2 的数据库编码使用了 utf8mb4 来支持 Emoji 表情和更多的语言文字。而由于 BAE3.0 不支持 utf8mb4,于是就出现了导入时的错误。
看了 WordPress 官方关于utf8mb4编码的说明,意思是只要在数据库支持的时候才会吧部分数据表的编码升级为utf8mb4,这就意味着,WordPress 还是向下兼容 utf8 格式的数据库编码的。这样,在导入之前,我们只需要把 utf8mb4 编码转成 utf-8 就可以了,有两种方法可以替换数据库编码,
一、直接通过代码编辑器替换 utf8mb4 为 utf8_general_ci
在导入数据库之前,用代码编辑器打开需要导入的数据库文件。
查找:utf8mb4_unicode_ci,替换为:utf8_general_ci
查找:utf8mb4替换为utf8
替换的时候一定要注意顺序,如果先替换utf8mb4,再替换utf8mb4_unicode_ci就会找不到utf8mb4_unicode_ci而造成替换失败。
二、通过 SQL n语句替换
熟悉 SQL 语句的朋友也可以直接通过 SQL 命令修改,通过命令修改的参考如下,有能力的朋友可以尝试使用。
mysql_select_db($dbname); $result=mysql_query('show tables'); while($tables = mysql_fetch_array($result)) { foreach ($tables as $key => $value) { mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"); }}