记录生活
简单不先于复杂

BAE 的数据库是不支持 utf8mb4 编码,无法导入 WordPress 4.2的数据库

收到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

在导入数据库之前,用代码编辑器打开需要导入的数据库文件。

  1. 查找:utf8mb4_unicode_ci,替换为:utf8_general_ci
  2. 查找: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");
}}
赞(0)
未经允许不得转载:爱安普 » BAE 的数据库是不支持 utf8mb4 编码,无法导入 WordPress 4.2的数据库