当前位置: 首页>>技术教程>>正文


重新启动4.2 utf8mb4数据库升级

webfans 技术教程 , 去评论

问题描述

我将WP更新为4.2,而它位于旧服务器上,与utf8mb4 upgrade requirements不匹配。

我转移到另一台符合这些要求的服务器,但WP将不再启动此数据库升级:/wp-admin/upgrade.php说Your WordPress database is already up-to-date。我试图手动将我的wp_post表设置为utf8mb4,但我所有的特殊字符都变为“�”。

有什么方法可以在简单升级中强制启动maybe_convert_table_to_utf8mb4,而不会丢失所有特殊字符?

谢谢!

最佳解决思路

我认为现在问题的答案是”No”。

如果maybe_convert_table_to_utf8mb4已经在不符合本文所列要求的服务器上升级到WP 4.3之后,就没有简单的方法可以在网站上触发:

https://make.wordpress.org/core/2015/04/02/the-utf8mb4-upgrade/

请注意,基于查看WP源代码,它似乎将它从4.2的更新序列移动到4.3(它不再存在于4.2中,现在根本没有升级),也许希望能够吸引更多用户。

所以这是你的答案,它很糟糕但比其他人更准确¯_(ツ)_ /¯

我们目前正在制作一个简单的脚本,让您可以根据动作钩子触发升级序列的本质。如果我们能够稳定并且正常工作,我们将尝试回来并在此分享,供其他人使用。

我们的基本计划是提取upgrade_430()的实际数据库部分,将其与数据库更新系统隔离,并手动触发它。

编辑:解决方案以下

虽然没有简单的方法来触发脚本,但这里有一个基于upgrade_430()但设计为drop-in的hand-coded解决方法。

https://gist.github.com/carlalexander/4106cfaaf405cec454ba195631bcb6bc

你可以将它放在一个插件中,或者只是将其粘贴到你的functions.php中。无论哪种方式,它应该是TEMPORARY。

它被设置为在您访问https://yoursite.com/?update-utf8bm4=1时自动触发

这可以确保它只运行一次,然后您可以选择何时(对于大型数据库,它可能需要一段时间,而且您不希望任何人在发生时编辑帖子)。

如果您不想使用GET触发器,只需删除add_action部件和if (!isset($_GET['update-utf8bm4']))部件。

再说一次:删除这个完整的时候,你不想留下像这样的GET触发器:)

次佳解决思路

当然,如果不言而喻,在尝试任何事情之前备份数据库,但是你要使用原始版本的数据库 – 我会尝试两件事:WordPress数据库修复和维护,以及phpMyAdmin的优化表:

这个来自这个页面,它有很多信息WP Knowledgebase,但你首先将这一行添加到你的网站的wp-config.php:

define('WP_ALLOW_REPAIR', true);

然后转到http://yoursite.com/wp-admin/maint/repair.php

您应该看到一个包含两个选项的页面:’Repair Database’和“修复和优化数据库”。

单击“修复和优化数据库”并为脚本提供运行时间。一旦他们成功运行,您将获得更新消息,让您知道各种表的状态。

一旦运行,非常重要,请删除刚添加到wp-config.php的wp_allow_repair行,将其从wp-config.php文件中删除。

如果这不起作用,你可以尝试phpMyAdmin的表优化,但如果WordPress’s didn’t有帮助,那可能也没有。我会在您运行上次修复的数据库的相同版本上尝试它。

进入phpMyAdmin,选择你的数据库,滚动到页面底部,检查’Check All’以选择数据库中的所有表,然后从旁边的选择菜单中选择”Optimize Table”。就是这样,它会自动启动。

这里有更多细节和截图:WPMUDev

如果这两个步骤不能单独或一起工作 – 您可以尝试使用备份数据库的另一个副本以相反的顺序运行它们…祝你好运!

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2023.html,转载请务必附带本地址声明。