收到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");
}}
关于 "BAE 的数据库是不支持 utf8mb4 编码,无法导入 WordPress 4.2的数据库 "的一个想法
非常感谢, 完美解决.