重新启动4.2 utf8mb4数据库升级


14

我在旧服务器上将WP更新为4.2,这与utf8mb4升级要求不符。

我移到了另一个满足这些要求的服务器,但是WP不再启动此数据库升级:/wp-admin/upgrade.php说Your WordPress database is already up-to-date。我尝试将wp_post表手动设置为utf8mb4,但我所有的特殊字符都变成了``...''。

有什么方法可以maybe_convert_table_to_utf8mb4通过简单的升级来强制启动,而又不会丢失我所有的特殊字符?

谢谢!

Answers:


5

我认为您当前问题的答案是“否”。

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中已不存在,现在完全没有升级),也许是希望吸引更多用户。

因此,这就是您的答案,虽然很糟糕,但是比其他答案更准确__(ツ)_ /

我们目前正在制作一个简单的脚本,该脚本可让您基于操作挂钩触发升级序列的本质。如果我们能够使其稳定并能够正常工作,我们将尝试返回并在此处共享以供他人使用。

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

编辑:下面的解决方案

虽然没有简单的方法来触发脚本,upgrade_430()但这是一个手工编码的变通办法,基于但设计为嵌入式程序。

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

您可以将其放在插件中,也可以将其粘贴到functions.php中。无论哪种方式,它都应该是TEMPORARY。

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

这样可以确保它只运行一次,并且您可以选择时间(对于大型数据库,可能要花一些时间,并且您不想让任何人在帖子发生时对其进行编辑)。

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

再说一次:删除完成后,您不想留下这样的GET触发器:)


2

当然,如果不言而喻,请在尝试任何操作之前先对数据库进行备份,但是您将使用数据库的原始版本—我将尝试两件事:WordPress数据库的维护和维护以及phpMyAdmin的优化表:

这来自具有大量WP知识库信息的页面,但您首先需要在网站的wp-config.php中添加以下内容:

define('WP_ALLOW_REPAIR', true);

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

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

单击“修复和优化数据库”,然后给脚本时间运行。它们成功运行后,您将收到更新消息,让您知道各种表的状态。

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

如果这不起作用,则可以尝试phpMyAdmin的表优化,但是如果WordPress无效,则可能也不行。我会在您上次进行修复的数据库的相同版本上尝试使用。

进入phpMyAdmin,选择数据库,滚动到页面底部,选中“全部检查”以选择数据库中的所有表,然后从其旁边的选择菜单中选择“优化表”。就是这样,它将自动启动。

以下是更多详细信息和屏幕截图: WPMUDev

如果这两个步骤(单独或共同)都不起作用,则可以尝试使用备份数据库的另一个副本以相反的顺序运行它们……祝您好运!


1
是否“修复和优化数据库”。重新启动maybe_convert_table_to_utf8mb4(就像任何WP更新一样)?您没有在回答中提及它;)
琼·琼(Joan

嗨,琼(Joan),抱歉,我的疏忽……我没有在笔记中看到它的任何具体提及,不,但是只要您在WordPress 4.2+中运行优化,就可以猜测是否可以。从核心注释中:[ make.wordpress.org/core/tag/wpdb/]
Vanessa King

已拥有所有UTF8表并进行了修复和优化。没有将它们转换为utf8mb4。此外,还没有修复或优化不是MyIsam而是InnoDB和已经utf8mb4的表。

是的,这不是对不起这个问题的答案。
jerclarke '16

0

您是否尝试过更改数据库表的排序规则?请尝试以下方法:

登录到phpmyadmin>选择数据库>操作>现在将排序规则从下拉列表更改为“ utf8mb4_unicode_ci”或更改为旧服务器上使用的版本。

希望它对您有用。

参见屏幕截图:http : //prntscr.com/8ip1ro/direct

切记:如果将sql文件从旧服务器导出到PC并使用任何文本编辑器打开它...并进行自定义和保存,则请检查何时保存sql文件文本编辑器“ Encoding”为Utf-8 ..看到我的截图:http : //prntscr.com/8ip2nr/direct

谢谢


这就是我尝试的(好像)正在启动函数一样,结果相同(到处都是)。正在寻找一种轻松重新启动WP功能的方法…
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.