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

文 / @WordPress主题

我的BAE数据库经历

最近我接到BAE发来的一封邮件,想测试一下BAE的性能,并导入数据库。但在导入时出现了一个错误,提示#1273-Unknowncollation:'utf8mb4_unicode_ci'。从字面意思上看,这是数据库不支持utf8mb4编码导致的。于是我向BAE客服人员发了个工单,客服人员回复如下:

–尊敬的用户您好!BAE的数据库是不支持utf8mb4编码的,所以导入时会出现该错误,建议您在导出sql文件的时候不使用utf8mb4编码,推荐utf8编码。感谢您对开放云的支持,祝您生活愉快。

我的数据源是WordPress4.2版本,使用的数据库编码正是utf8mb4,这是为了支持Emoji表情和更多的语言文字。但由于BAE3.0不支持utf8mb4编码,导致我在导入时遇到了错误。

经查,WordPress官方的说明是只要在数据库支持的情况下,部分数据表的编码就会升级为utf8mb4。这意味着WordPress向下兼容utf8格式的数据库编码。因此,在导入之前,我们只需要把utf8mb4编码转成utf-8,就可以轻松解决这个问题,有两种方法可以替换数据库编码,

一、直接通过代码编辑器替换utf8mb4为utf8_general_ci

首先,打开需要导入的数据库文件,使用编辑器进行以下替换:

  1. 查找:utf8mb4_unicode_ci,替换为:utf8_general_ci
  2. 查找:utf8mb4,替换为utf8

替换时需要注意顺序,务必先替换utf8mb4,再替换utf8mb4_unicode_ci,避免找不到而造成替换失败。

二、通过SQL语句替换

如果你熟悉SQL语句,也可以通过以下命令进行修改:

mysql_select_db($dbname);
$result=mysql_query('showtables');
while($tables=mysql_fetch_array($result)){
foreach($tablesas$key=>$value){
mysql_query("ALTERTABLE$valueCONVERTTOCHARACTERSETutf8COLLATEutf8_general_ci");
}}

以上是个人的亲身经历,希望对正在使用BAE数据库的开发者有所帮助。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。