Query is locking tables, can't kill that process

Mike picture Mike · Apr 10, 2013 · Viewed 39.4k times · Source

I have a query locking tables in MySQL (using InnoDB):

UPDATE table SET status = 2 WHERE status = 3

This query caused a deadlock on the table and can't bypass it.

I tried to do:

show processlist

then kill the process id but i can't seems to kill it

I tried:

kill 9588

9588 is the process id.

Then I do show processlist I still see the same query on the list.

How can I force killing this process and then why would this query cause a dead lock? how can I fix it?

Answer

Eric Leschinski picture Eric Leschinski · Oct 30, 2014

When you run a MySQL instance on RDS and want to kill a thread or a query for some reason, you’ll find you cannot use KILL or mysqladmin kill because you don’t have a permission to do so.

RDS provides the stored procedures named mysql.rds_kill and mysql.rds_kill_query which will kill a thread and a query respectively. To kill a thread, first use SHOW PROCESSLIST to get the list of threads and find the id of the thread you want to kill. Assuming the thread id is 53512, then use

CALL mysql.rds_kill(53512)

Source: http://snak.tumblr.com/post/13856391340/killing-a-thread-or-query-of-mysql-running-on-rds