首页 > 解决方案 > 如何删除阻止我删除表的锁

问题描述

很长一段时间后,我正在重新访问数据库。我已经设置了一个非常基本的 MySQL 数据库,它只有一个表,但我无法更改或删除该表。我在 MySQL Workbench 中不断收到一条错误消息,内容如下:

“DROP TABLE 'flaskr-db'.'user' 错误代码 1213:尝试获取时发现死锁.....

有没有简单的方法来解决这个问题?

有没有一种简单的方法来列出锁并杀死它们?该数据库不是生产数据库,只是我设置的一个小型测试数据库。

谢谢

标签: mysqldeadlock

解决方案


我们需要杀死导致死锁的进程。

我们通过梳理以下输出找到了锁:

show engine innodb status;

这会吐出一大堆信息。相关部分位于 TRANSACTIONS 部分。在您的输出中,相关问题似乎是:

3 lock struct(s), heap size 1248, 2 row lock(s)
MySQL thread id 15505085, query id 909492456 junoa....

要杀死它,您需要使用指定的“线程 id #”来执行——在这种情况下:

kill 15505085

此外,如果您在本地计算机上遇到问题,您可以重新启动服务器,但如果数据库正在服务器上运行,则不建议这样做。首先尝试杀死该进程。


推荐阅读