MySql教程

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

本文主要是介绍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掉另一台主机的定时任务,重修修改表成功。定时任务不使用后要记得取消。

这篇关于mysql修改表数据,锁表解决办法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!