wordpress死锁在phpmyadmin中不直接报错,需手动查innodb_trx和innodb_lock_waits表;典型死锁提示“deadlock found when trying to get lock”仅见于debug.log或php错误日志。

死锁错误在phpMyAdmin里长什么样
WordPress 出现“数据库连接失败”或“500 错误”时,如果后台能进 phpMyAdmin,先看 information_schema.INNODB_TRX 和 information_schema.INNODB_LOCK_WAITS 这两张表——它们不显示在左侧导航栏,默认得手动输入 SQL 查。常见死锁触发后的典型报错是:Deadlock found when trying to get lock; try restarting transaction,但这个信息通常只出现在 WordPress 的 debug.log 或 PHP 错误日志里,phpMyAdmin 本身不会弹窗提醒。
用 SQL 快速定位正在阻塞的事务
在 phpMyAdmin 的「SQL」标签页中粘贴执行以下语句,它能一次性列出当前所有活跃事务、谁在等锁、谁持有锁:
SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query FROM information_schema.INNODB_LOCK_WAITS w INNER JOIN information_schema.INNODB_TRX b ON b.trx_id = w.blocking_trx_id INNER JOIN information_schema.INNODB_TRX r ON r.trx_id = w.requesting_trx_id;
如果返回空结果,说明此刻没有活跃死锁(但不代表没发生过);若返回行,重点关注 waiting_query 和 blocking_query 字段内容——它们大概率来自 WordPress 的 wp_options 表更新、wp_posts 的 AUTO_INCREMENT 插入,或缓存插件(如 WP Rocket、Redis Object Cache)批量写入时的并发冲突。
使用tbot机器ID身份文件配合tsh CLI,通过Teleport访问控制SSH登录托管主机或执行远程命令。
为什么 wp_options 表特别容易成死锁源
WordPress 把站点设置、主题选项、插件配置全塞进 wp_options 表,且大量使用 INSERT ... ON DUPLICATE KEY UPDATE 或 REPLACE INTO 操作。这类语句在 InnoDB 下会加间隙锁(gap lock),多个请求同时更新不同 option_name 仍可能因索引扫描范围重叠而互相等待。
-
wp_options.option_name是唯一索引,但查询条件没走索引(比如用LIKE '%cache%')会导致全表扫描加锁 - 插件调用
update_option()时未设$autoload = 'no',导致每次读wp_options都要加载全部autoload = 'yes'的记录,放大锁竞争 - WP-CLI 命令(如
wp rewrite structure)和后台保存设置同时执行,可能对同一行反复UPDATE
临时缓解 + 后续验证动作
死锁无法完全避免,但可快速止血并确认是否修复:
- 在 phpMyAdmin 中执行
KILL [blocking_thread](用上一步查出的blocking_thread数字替换),强制终止持锁线程——注意别 KILL 自己的连接 - 检查
wp_options表引擎是否为 InnoDB:SHOW CREATE TABLE wp_options;如果是 MyISAM,立即转 InnoDB(MyISAM 表级锁更容易卡死) - 在 WordPress 的
wp-config.php加上define('WP_DEBUG_LOG', true);,复现问题后直接搜日志里的Deadlock,比依赖 phpMyAdmin 更可靠
真正难的是区分“偶发死锁”和“高频死锁”——前者可能是瞬时高并发,后者往往暴露了某个插件的低效 SQL 或自定义代码里没做事务拆分。不要只盯着 phpMyAdmin 看锁,得把 slow_query_log 和 WordPress 的 save_queries 开起来交叉比对。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










