返回 Bug 清单
BUG-0030project-12低需关注unknown

MySQL 僵死锁

发现:2026-09-30验证:2026-10-15置信度:85%

症状

MySQL InnoDB 出现长时间未提交的僵死事务(常见于 Flyway 迁移中断、长 SQL 未 commit、backend 异常退出遗留的连接),导致: - `ERROR 1205` Lock wait timeout - 写操作(INSERT/UPDATE)挂起超时 - 用户不可见的后台数据写入失败

修复方案

`sudo bash deploy/kill-mysql-app-locks.sh` - Step 1:`docker compose stop backend` + `docker rm -f app-backend`(停止连接来源) - Step 2:`SELECT innodb_trx` 列出所有活跃事务 - Step 3:逐一 `KILL <trx_mysql_thread_id>` 所有 innodb_trx 中的线程 - Step 4:`KILL <id>` 所有 processlist 中涉及 `app_db` / `flyway_schema_history` 的连接(排除 Daemon) - Step 5:若仍有残留事务 → `docker compose restart mysql` 强制重启 - Step 6:重启后验证 `innodb_trx` 事务数为 0

修复命令

`sudo bash deploy/kill-mysql-app-locks.sh`
- Step 1:`docker compose stop backend` + `docker rm -f app-backend`(停止连接来源)
- Step 2:`SELECT innodb_trx` 列出所有活跃事务
- Step 3:逐一 `KILL <trx_mysql_thread_id>` 所有 innodb_trx 中的线程
- Step 4:`KILL <id>` 所有 processlist 中涉及 `app_db` / `flyway_schema_history` 的连接(排除 Daemon)
- Step 5:若仍有残留事务 → `docker compose restart mysql` 强制重启
- Step 6:重启后验证 `innodb_trx` 事务数为 0

错误签名

- `ERROR 1205` Lock wait timeout

技术信息

来源项目

project-12

标签

unknown, project-12