我在 MySQL 中有一个查询锁定表(使用 InnoDB):
UPDATE table SET status = 2 WHERE status = 3
此查询导致表上出现死锁并且无法绕过它。
我试图做:
show processlist
然后杀死进程ID,但我似乎无法杀死它
我试过:
kill 9588
9588 是进程 ID。
然后我做
show processlist
我仍然在列表中看到相同的查询。我怎样才能强制终止这个进程,然后为什么这个查询会导致死锁?我该如何解决?
最佳答案
当你在 RDS 上运行 MySQL 实例,由于某种原因想要杀死一个线程或一个查询时,你会发现你不能使用 KILL
或 mysqladmin kill
因为你没有这样做的权限。
RDS 提供了名为 mysql.rds_kill
的存储过程。和 mysql.rds_kill_query
这将分别杀死一个线程和一个查询。要杀死线程,首先使用 SHOW PROCESSLIST
获取线程列表并找到要杀死的线程的 ID。假设线程id是53512,那么使用
CALL mysql.rds_kill(53512)
来源:
http://snak.tumblr.com/post/13856391340/killing-a-thread-or-query-of-mysql-running-on-rds
关于mysql - 查询正在锁定表,无法终止该进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15932058/