启用插件后 wp_options 表锁定通常是因为 MySQL 元数据锁(MDL)卡死或 WordPress 内部锁选项残留,需在 phpMyAdmin 中终止锁表进程并删除 core_updater.lock 等残留项。
先说结论:先确认锁类型是数据库进程锁还是 WordPress 选项锁,再针对性清理,操作前务必备份 wp_options 表。
- 先确认:在 phpMyAdmin 执行 SHOW PROCESSLIST; 查看是否有 Waiting for table metadata lock 状态。
- 先处理:执行 KILL 命令终止卡死进程,并删除 wp_options 表中 core_updater.lock 等锁记录。
- 再验证:刷新网站后台,确认不再提示“正在进行另一项更新”或白屏。
命令速用版
若确定是数据库进程锁,可在 phpMyAdmin 的 SQL 标签页执行以下命令:
SHOW PROCESSLIST;
KILL [进程 ID];
DELETE FROM wp_options WHERE option_name IN ('core_updater.lock', 'auto_updater.lock');注意将 [进程 ID] 替换为实际查询到的数字 ID,且不要删除整个 wp_options 表。
为什么会这样
插件启用时会向 wp_options 表写入配置或触发升级检查,若脚本意外终止,MySQL 可能未释放写锁。
WordPress 升级流程依赖 core_updater.lock 等键值做互斥控制,中断后不会自动释放,导致后续请求被挂起或报错“正在进行另一项更新”。
分步处理
1. 登录 phpMyAdmin,选择 WordPress 数据库。
2. 点击 SQL 标签,输入 SHOW PROCESSLIST; 执行,找到 State 列含 Waiting for table metadata lock 的行,记下 ID。
3. 输入 KILL [ID]; 执行,再次刷新进程列表确认该 ID 消失。
4. 打开 wp_options 表,搜索 option_name 为 core_updater.lock 或 auto_updater.lock 的行,直接删除。
5. 若使用了对象缓存(如 Redis),手动清空缓存,避免读到旧锁状态。
怎么验证是否生效
访问 WordPress 后台,尝试再次启用插件或更新核心,若不再出现白屏或“另一进程正在更新”提示,即修复成功。
在 phpMyAdmin 中再次执行 SHOW PROCESSLIST;,确认不再有 Waiting for table metadata lock 状态。
常见坑
不要直接删除 wp_options 表,该表存储站点 URL 和核心配置,删除会导致网站不可用。
终止进程时勿误杀自己的 phpMyAdmin 会话连接,否则操作会中断。
若删除锁记录后仍报错,检查 wp_usermeta 表中是否有安全插件留下的锁定元数据。
常见问题
可以直接清空 wp_options 表吗?
不可以,wp_options 表包含站点地址和激活插件列表,清空会导致网站崩溃。
删除锁记录后为什么还是无法访问?
可能是对象缓存未清理,或 wp_usermeta 表中残留了安全插件的锁定记录。
如何防止插件启用再次锁表?
增加 PHP 内存限制,确保升级过程中网络稳定,避免手动刷新升级页面。
参考来源
- 如何修复 WordPress 由于升级中断导致的表锁定_在 phpMyAdmin 中终止锁表进程恢复网站访问
- 如何通过数据库修复 WordPress 因升级中断导致的死循环_锁记录清理操作
- WordPress 后台更新失败提示“正在进行另一项更新”怎么办