对于“[Err] 1205 -Lock wait timeout exceeded; try restarting transaction”这个错误,顾名思义,事务锁超时,尝试重启事务。但当重试几次后,还是报该错误,那么这个时候我们可以手动kill掉造成死锁的事务线程。

mysql数据库事务隔离级别

  • Read Uncommitted(读取未提交内容)

  • Read Committed(读取提交内容)

  • Repeatable Read(可重读)

  • Serializable(可串行化)

查看数据库版本

select VERSION();

查看数据库事务

查看会话隔离级别(5.0以上版本):select @@tx_isolation;
查看会话隔离级别(8.0以上版本):select @@transaction_isolation;

查看数据库线程情况

SHOW FULL PROCESSLIST;

 

没有看到正在执行的很慢SQL记录线程,再去查看innodb的事务表INNODB_TRX,看下里面是否有正在锁定的事务线程,看看ID是否在show full processlist里面的sleep线程中,如果是,就证明这个sleep的线程事务一直没有commit或者rollback而是卡住了,我们需要手动kill掉

SELECT * FROM information_schema.INNODB_TRX;

发现id为1612676090的SQL,手动kill掉

kill死锁的SQL后,再去执行就OK了。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐