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;
发现有一个线程从11点开始就一直在连接
mysql> SELECT * FROM information_schema.processlist where id=23957085;
查看id试哪里连过来的请求,
找到这里已经知道是哪个机器在连接库操作表了,后续登录机器找到原因是遗弃的定时任务导致问题出现。
kill掉另一台主机的定时任务,重修修改表成功。定时任务不使用后要记得取消。