首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:“锁定等待超时”

问MySQL:“锁定等待超时”
EN

Stack Overflow用户
提问于 2008-09-15 16:53:55
回答 4查看 41.8K关注 0票数 12

我正在尝试从MySQL 5.0.45数据库中删除几行:

代码语言:javascript
复制
delete from bundle_inclusions;

客户端工作一段时间,然后返回错误:

代码语言:javascript
复制
Lock wait timeout exceeded; try restarting transaction

可能有一些未提交的事务在这个表上有一个锁,但我需要这个过程来胜过任何这样的锁。如何在MySQL中解锁?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-09-15 17:08:29

我同意Erik的观点;截断表是可行的。但是,如果由于某些原因不能使用该选项(例如,如果不是真的想删除表中的每一行),可以尝试以下选项:

  • 删除较小批次的行(例如,DELETE FROM bundle_inclusions WHERE id BETWEEN?和?)
  • 如果它是一个MyISAM表(实际上,这也可以与InnoDB一起使用),请尝试在删除之前发出一个锁表。这应该保证你有独占的访问权。
  • 如果它是一个InnoDB表,那么在超时之后,使用SHOW INNODB STATUS。这将使您深入了解锁获取失败的原因。
  • 如果您拥有SUPER权限,可以尝试SHOW PROCESSLIST ALL以查看哪些其他连接(如果有)正在使用表,然后使用KILL清除正在竞争的连接。

我相信还有很多其他的可能性;我希望其中一个能有所帮助。

票数 27
EN

Stack Overflow用户

发布于 2012-05-22 22:49:13

Linux:在mysql配置(/etc/my.cnf或/etc/mysql/my.cnf)中,插入/编辑此行

代码语言:javascript
复制
innodb_lock_wait_timeout = 50

充分增加该值(以秒为单位),重新启动数据库,执行更改。然后恢复更改并重新启动。

票数 5
EN

Stack Overflow用户

发布于 2013-03-21 13:03:03

我也遇到了同样的问题,一个无休止的流氓事务。我重新启动了mysqld进程。您不需要截断表。您可能会丢失来自该恶意事务的数据。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档