先说结论:这不是“你手速太快”,是 WordPress 更新锁没松手
当你在后台更新主题/插件/WordPress 核心时,如果中途网络断了、页面关了、服务器超时了,WordPress 可能会留下一个“更新锁(lock)”。然后它就会一本正经地告诉你:
“另一个更新正在进行(Another update is currently in progress)”
翻译成人话就是:我以为我还在更新,所以你别动。问题在于,它“以为”的时间可能长到离谱。
这个提示到底是什么机制?(为什么会出现)
WordPress 为了避免多人/多窗口同时更新导致文件互相覆盖,会在更新时写入一个锁。这个锁一般存储在数据库的 wp_options 表里,key 通常是:
core_updater.lock
正常情况下,更新完成后它会自动删除/释放;异常情况下(超时、宕机、权限问题、磁盘满、PHP 进程挂掉),锁就可能残留,导致你后续任何更新都被拦截。
在动手之前:先做一个“人类该做的检查”
别急着删数据库。你先判断一下是否真的有更新任务在跑:
- 如果你刚刚点了更新,等 2–5 分钟再刷新(有些主机 IO 慢得像在用算盘)。
- 如果你是多人协作后台,确认没人正在更新插件/主题/核心。
- 如果你用了缓存/反代/CDN(尤其是后台被奇怪地缓存),先清缓存再试。
如果你已经等了很久(比如 10 分钟以上),还在提示,那基本就是锁残留了。
解决方法 1:等它自己释放(适合“刚卡住不久”的情况)
WordPress 的锁通常会有过期时间,很多情况下你等一会儿它会自己恢复。
适用场景:你刚点更新不久,服务器性能一般但没崩,且你不想碰数据库。
不适用场景:你已经被它“另一个更新正在进行”教育了半小时。
解决方法 2(推荐):用 WP-CLI 安全解除锁
如果你能 SSH 登录服务器,WP-CLI 是最省心的方式,操作清晰、可回滚,像个靠谱的人类。
执行前先查看锁:
wp option get core_updater.lock
然后删除锁:
wp option delete core_updater.lock
如果你的站点有自定义表前缀或多站点环境,WP-CLI 会比你手动找表更不容易翻车。
解决方法 3:phpMyAdmin/数据库里删除 core_updater.lock(最常用,也最容易手滑)
如果你没法 SSH,那就用 phpMyAdmin 或数据库管理工具直接删锁。
步骤(按顺序做,别自由发挥)
- 备份数据库(至少导出
wp_options表)。 - 打开数据库,找到你的 WordPress 数据库。
- 进入
wp_options表(注意:你的前缀可能不是wp_)。 - 搜索
core_updater.lock。 - 删除这一行(Delete)。
如果你想用 SQL(更快,但也更“刺激”)
把 wp_ 替换成你的表前缀:
DELETE FROM wp_options WHERE option_name = 'core_updater.lock';
删了锁还不行?那说明“锁只是表象”,更新本身可能失败了
现实通常更残酷:锁解除后你再更新,又卡住或报错。这时候你要排查的是“为什么更新会失败”。常见原因:
- 文件权限不对:WordPress 无法写入
wp-content或核心文件目录。 - 磁盘满:更新需要解压文件,磁盘不够直接翻车。
- PHP 超时 / 内存不足:更新包大一点就会中途断。
- 安全插件/防火墙拦截:某些 WAF 会把更新请求当可疑。
- 主机 IO 太慢:共享主机常见,更新体验像在等地铁末班车。
避免复发:别让 WordPress 更新像抽盲盒
想减少再次遇到“另一个更新正在进行”,你可以做这些更务实的事:
- 尽量用 WP-CLI 更新:比后台点按钮更稳定,日志更清晰。
- 更新前先备份:尤其是核心更新和批量插件更新。
- 不要一次性全选几十个插件更新:失败概率会按你的人类自信程度上升。
- 检查服务器资源:磁盘、内存、PHP max_execution_time。
- 避免在高峰期更新:服务器本来就喘不过气,你还让它搬家。
快速自检清单(你可以照着对号入座)
- 等待超过 10 分钟仍提示:大概率锁残留
- 有 SSH:优先 WP-CLI 删除
core_updater.lock - 无 SSH:phpMyAdmin 删除
wp_options里的core_updater.lock - 解锁后仍更新失败:排查权限/磁盘/PHP超时/安全拦截
一句话总结
“另一个更新正在进行”不是玄学,是 WordPress 的更新锁没释放。解法也不神秘:要么等它醒悟,要么你帮它删掉 core_updater.lock,然后把导致更新失败的根因顺手解决掉,免得下次再见。