mysql - 如何删除阻止我删除表的锁
问题描述
很长一段时间后,我正在重新访问数据库。我已经设置了一个非常基本的 MySQL 数据库,它只有一个表,但我无法更改或删除该表。我在 MySQL Workbench 中不断收到一条错误消息,内容如下:
“DROP TABLE 'flaskr-db'.'user' 错误代码 1213:尝试获取时发现死锁.....
有没有简单的方法来解决这个问题?
有没有一种简单的方法来列出锁并杀死它们?该数据库不是生产数据库,只是我设置的一个小型测试数据库。
谢谢
解决方案
我们需要杀死导致死锁的进程。
我们通过梳理以下输出找到了锁:
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
此外,如果您在本地计算机上遇到问题,您可以重新启动服务器,但如果数据库正在服务器上运行,则不建议这样做。首先尝试杀死该进程。
推荐阅读
- sql - 创建具有不同条件 SQL 的 2 列的表
- c++ - 将 QPushButtons 数组连接到 lambda 函数 Qt 的问题
- github - 有没有一种方法可以在运行时动态地使 github 操作机密可用,而无需在 yaml 中显式定义每个变量?
- telegram - 电报机器人的新手
- mongodb - NestJS Mongo 引用未正确保存
- java - UDP 侦听器不接收数据
- git - 远程 Docker 容器内的 Github 访问(使用 2FA)
- c++ - 当我在控制台 C++ 程序中键入 STOP 时,我希望我的程序停止接受来自控制台的输入
- firebase - 如何在没有上下文的情况下使用提供者?
- sql - 减去最早日期的收入值减去redshift sql中的最晚日期