1. 正在先生首页
  2. 技术开发

三种完全不同的办法来解决WordPress提示“另一更新正在进行”问题

基本上可以预见的是,你是那非常少数的和我一样的可怜虫,被Wordpress提示“另一更新正在进行”折腾的快要神经衰弱了,黑着眼圈,喝着温咖啡奋战在修复这一历史性的技术难题中。

因为,绝大多数人,可以通过第一种方法搞定这个问题,并且该解决办法充斥着上大大小小的网站。只有锲而不舍的精神才让你在茫茫大海中,找到了我这一叶扁舟。

方法一、删数据表字段

先来看看最常见的解决方法,修改数据库字段法:在 wp_options 数据表中,找到字段option_name值为core_updater.lock并且删除之,为了方便,我把SQL写在下面。

SELECT * FROM `wp_options` WHERE `option_name` LIKE 'core_updater.lock'
DELETE FROM `wp_options` WHERE `option_name` LIKE 'core_updater.lock'

如果你是 WordPress 4.5 以前的版本,还是这个字段,值更改为 core_updater ,如下

SELECT * FROM `wp_options` WHERE `option_name` LIKE 'core_updater'
DELETE FROM `wp_options` WHERE `option_name` LIKE 'core_updater'

还是同样的办法,如果没有数据库权限的话,可以在 WordPress 的插件管理中,搜索并安装插件 “Fix Another Update In Progress” ,该插件就是帮你执行了上面的数据库操作。修复后可以直接删除之。

方法二、替换文件

删除Wordpress目录下的 wp-admin 和 wp-includes 以及根目录下除了 wp-config.php 以外的所有 WordPress 原生文件,然后找到相同版本的 WordPress 源文件,复制进去。

要删除 wp-admin 和 wp-includes 目录的原因是,这两个目录一般情况下是可写目录,在历史的升级过程中,Wordpress 可能会写入一些配置文件,而在升级之后,因为各种原因,没有能够删掉。导致的提示提示“另一更新正在进行”。

如果你是在服务器上直接操作的,别忘记修改 wp-admin 和 wp-includes 的目录权限,否则会出现自动升级安装失败。

这里千万注意,不要删除文件 wp-config.php 和目录 wp-content ,否则就欲哭无泪了。

对于这种方法,我也是在网上找了很久看到的,反正是没解决我的问题。但希望到此你的问题已经可以妥善解决。如果不行,就继续往下看吧。

方法三、修改代码

以 WordPress 4.9.1 版本为例,找到文件 wp-admin/includes/class-core-upgrader.php 从第115行开始。

// Lock to prevent multiple Core Updates occurring
// $lock = WP_Upgrader::create_lock( 'core_updater', 15 * MINUTE_IN_SECONDS );
// if ( ! $lock ) {
// return new WP_Error( 'locked', $this->strings['locked'] );
// }

把如上几行都注释掉,在运行系统升级试试?有没有很爽。

可惜这个终究不是办吧,因为升级过后系统会自动替换新的 class-core-upgrader.php ,所以这几行注释会被复写。所以,升级过后,问题依旧。

但是这个至少给了我们找到问题的线索,顺着代码往上缕,就可以找到问题的出处了。

顺藤摸瓜,可以找到定义 WP_Upgrader::create_lock 的代码段,在 wp-admin/includes/class-wp-upgrader.php 中。

设置断点,打印 sql

INSERT IGNORE INTO `wp_options` 
( `option_name`, `option_value`, `autoload` ) 
VALUES 
('core_updater.lock', 'core_updater.lock', 'no') /* LOCK */

拿到phpmyadmin中执行结果: 0 rows inserted.
拿掉 IGNORE 后,会有错误提示,原来是表 option_id 属性除了问题,没有 auto_increase 。

好了,到这里,该披露一下背景了。出现提示“另一更新正在进行”的站点,刚刚进行过一次服务器迁移,迁移了多个Wordpress,其它的都没有出问题,只有这一个,由于数据库比较大,在导入过程中出现过错误提示,但是事后用 wordpress 的数据库检查,恢复,优化等都没有出现问题,并且迁移过去后运行良好,就没有当回事,直到出现这个茬。

总结一下,关于 WordPress提示“另一更新正在进行”,前两个方法是正解,如果不得解决,那么基本上是数据库出了问题。要数据库出问题,也只有在迁移的时候才会可能碰到。办法就是重新迁移一遍数据库,保证不会出现任何错误提示。

原创文章,作者:Y.Y,如若转载,请注明出处:https://84361749.com/post/wordpress-another-update-is-in-process.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注