导入WordPress数据库时如何修复“utf8mb4_0900_ai_ci”排序错误

如果您将 WordPress 安装从 MySQL 8 服务器切换到 MySQL 5.7(或更低版本),您很可能会遇到 1273 - 未知排序规则:'utf8mb4_0900_ai_ci' 尝试导入数据库时​​出错。无论您使用哪种工具导入或导出数据库,都无法逃脱此错误。

但是,如果您之前在 MySQL 5.7 服务器上运行您的博客并且最近切换到 MySQL 8 但现在切换回 MySQL 5.7,那么核心 WordPress 表(帖子、分类、选项、评论等)和任何插件您安装在 MySQL 5.7 服务器上应该仍然使用“utf8mb4_unicode_520_ci”排序规则。

您可以从使用“utf8mb4_unicode_520_ci”排序规则的数据库中导入所有表。所以你需要做的是在你的数据库中找到使用“utf8mb4_0900_ai_ci”排序规则的表,并将它们从导出的数据库备份文件中排除。

🔎 找出哪些表使用了“utf8mb4_0900_ai_ci”排序规则

您需要找到数据库中的哪些表使用“utf8mb4_0900_ai_ci”排序规则,以便我们在导出数据库时可以排除这些表。

如果您具有对服务器的 SSH 访问权限和数据库访问凭据 (您完全可以从 wp-config.php 文件中获得),您可以运行以下命令轻松找到具有“utf8mb4_0900_ai_ci”排序规则的表。

mysqlshow -u 用户名 -p --status 数据库 | grep "utf8mb4_0900_ai_ci"

? 更换 用户名数据库 在上面的命令中使用您的数据库和用户名。

在提示时输入您的数据库用户密码 输入密码: 并且您将在数据库中使用“utf8mb4_0900_ai_ci”排序规则获得表列表。

使用“utf8mb4_0900_ai_ci”排序规则的表应该只属于您在切换到 MySQL 8 后安装的插件。记下表的名称,以便下次导出数据库时可以排除它们。

💡小贴士

如果你没有SSH访问服务器,那么在你的电脑上下载.sql数据库文件,用Notepad++等文本编辑器打开,使用搜索功能(Ctrl+F)查找哪些表使用了“utf8mb4_0900_ai_ci”整理。

导出数据库,不包括“utf8mb4_0900_ai_ci”整理表

既然您拥有使用“utf8mb4_0900_ai_ci”排序规则的表名称,您可以导出不包含“utf8mb4_0900_ai_ci”表的新数据库备份文件,以便将其导入在 MySQL 5.7 服务器上运行的 WordPress 安装。

假设您已经使用 WP-CLI 导出/导入 WordPress 数据库,运行以下命令导出您的数据库,同时排除某些表。

wp db export --exclude_tables=table_name,table_name,table_name

? 代替 表名 在上面的命令中,使用“utf8mb4_0900_ai_ci”排序规则的表的实际名称。

而已。您现在可以轻松地将 WordPress 数据库导入运行 MySQL 5.7 的新服务器。

? 重要的提示

对于您从备份中排除的数据库表,请务必在新服务器上手动重新创建其数据。由于这些表仅包含插件,因此请检查这些插件是否提供了在插件设置中导出数据的方法,或者以在旧服务器上设置的相同方式在新服务器上重新配置插件。