mysql修改表数据,锁表解决办法

无法修改mysql表结构问题

#报错	ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

在mysql5.5之后,information_schema数据库加了三个关于锁的表

     innodb_trx ## 当前运行的所有事务

     innodb_locks ## 当前出现的锁
	
     innodb_lock_waits ## 锁等待的对应关系

排查思路

1、 查看是否有正在使用表的事务,发现并没有正在使用的事务
mysql> show full processlist;
2、 查看线程id,根据时间判断是否存在长时间未提交的事务,导致无法修改表数据
mysql> SELECT * FROM information_schema.innodb_trx \G;
image
发现有一个线程从11点开始就一直在连接
mysql> SELECT * FROM information_schema.processlist where id=23957085;
查看id试哪里连过来的请求,
image

找到这里已经知道是哪个机器在连接库操作表了,后续登录机器找到原因是遗弃的定时任务导致问题出现。
kill掉另一台主机的定时任务,重修修改表成功。定时任务不使用后要记得取消。

更为详细的请参考:https://www.cnblogs.com/topicjie/p/7323248.html
posted @ 2021-09-06 17:51  小情绪就不闹  阅读(844)  评论(0编辑  收藏  举报