MariaDB删改特定表触发HeidiSQL崩溃无法操作问题咨询
问题答复
仅杀掉除root外的所有查询不一定能解决该问题,故障大概率和未释放的锁、长事务、表损坏、Python插入逻辑异常相关,可按以下步骤排查解决:
- 排查未释放的锁与长事务:你仅杀掉自己发起的查询无法解决其他会话持有的锁,若同事的Python脚本插入数据后未正确提交事务、或插入过程中生成了未释放的表级/行级锁,会导致后续的DDL(改列、删表)、DML(更新)操作持续阻塞。可执行以下语句查询锁与事务信息:
找到对应异常事务的线程ID后再kill即可,不要盲目杀掉所有非root查询,避免影响其他正常业务。-- 查看当前持有锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 查看运行中的未提交事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; - 排查表损坏问题:如果Python插入过程中出现过异常中断、或插入的数据存在格式异常,可能会导致InnoDB表结构损坏,可执行
CHECK TABLE table1;检查表状态,若返回损坏提示,先备份该表对应的ibd物理文件,再执行REPAIR TABLE table1;尝试修复。 - 核查Python插入逻辑差异:仅这两张表经过该同事的Python插入操作后出现故障,可核查对应脚本是否存在未关闭数据库连接、插入时自动加排他锁、单批次插入数据量过大触发表锁的逻辑,和其他正常表的插入逻辑做对比即可定位差异。
- 排除客户端兼容性问题:可先断开所有HeidiSQL连接,通过MariaDB原生命令行执行更新、删表操作,如果命令行也出现卡住的情况,即可排除HeidiSQL本身的兼容性问题,确定是数据库侧的故障。
内容的提问来源于stack exchange,提问作者beginnercoder
相关产品推荐
相关产品推荐

