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;
mysql修改表数据,锁表解决办法
发现有一个线程从11点开始就一直在连接
mysql> SELECT * FROM information_schema.processlist where id=23957085;
查看id试哪里连过来的请求,
mysql修改表数据,锁表解决办法

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

上一篇:Graceful Degradation Journey of a concept, from fault-tolerance to information loss


下一篇:mysql中通过sql语句查询指定数据表的字段信息