mysql 报错 Lock wait timeout exceeded; try restarting transaction

mysql 报错 Lock wait timeout exceeded; try restarting transaction

做了一个定时同步数据库的任务,突然一只提示 Lock wait timeout exceeded; try restarting transaction

报这个错的原因主要是某个SQL 被锁住了。

处理方式:

打开数据库【information_schema】;

打开表【INNODB_TRX】;

如果发现里面有数据,并且数据字段【trx_state】中的值为LOCK WAIT,那说明该条信息被锁住了;

此时,可以使用kill ,杀死该进程,通过查看字段【trx_mysql_thread_id】来获取进程id,最后执行

kill 234234

但是杀死该进程,可能只是临时解决方法,更多的,需要排除为什么出现这个锁到问题,达到治本的效果,如:

可以查看字段【trx_query】该字段中就是存储的该条进程执行的SQL语句,可以通过排除该语句的问题,以解决最终问题。


附录:

INNODB_TRX表说明:

image.png

qrcode