0

ERROR 1205 (HY000): Lock wait timeout exceeded

问题归档 2019-04-14
106
摘要:ERROR1205(HY000):Lockwaittimeoutexceeded;tryrestartingtransaction请教各位...

问题描述

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

请教各位 资深前辈 Mysql Innodb 引擎数据库 出现1205 锁等待问题 这个问题会是什么原因导致的呢?

专家解答

一般来说,这个错误表示行锁等待超时.


InnoDB是事务引擎,每次对行操作(一般是update,delete)前,都需要拿到行锁,(在一些特定场景下,还需要求到间隙锁),之后才能实际更新数据,


如果你的事务将要修改的数据对应的锁已经被别的事务持有,在那个事务提交或者回滚之前,你的语句就一直会等待,这个等待超过指定时间(innodb_lock_wait_timeout)之后,就会让你的会话结束等待,返回这个错误.


解决办法的话,一个是看下当前是否有长耗时会话或者SQL.


另外再高版本(5.6以上)之后,可以在information_schema里面有innodb_locks等表,当会话等待期间,可以看到你要求的锁被哪个会话持有.

这个表在5.7,8.0之后被移动到performance_schema里面,需要注意.

「喜欢文章,快来给作者赞赏墨值吧」

评论

0
0
最新发布
暂无内容,敬请期待...
数据库资讯
最新 热门 更多
本月热门
近期活动
全部
暂无活动,敬请期待...
相关课程
全部
暂无课程,敬请期待...