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