暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ERROR 1205 (HY000): Lock wait timeout exceeded

原创 问题归档 2019-04-14
1316

问题描述

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里面,需要注意.

最后修改时间:2019-04-14 14:37:06
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论