问题
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?
回答1:
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
回答2:
The KILL
command requests the query terminate, and the state of the command should show up as Killed
. There's no way to force-kill something and have it terminate immediately.
As a last resort you can always shut-down and restart your mysqld
server process.
回答3:
You need to run following command to kill the process.
> show processlist;
> kill query processId;
Query parameter specifies that we need to kill query command process.
The syntax for kill process as follows
KILL [CONNECTION | QUERY] processlist_id
Please refer this link for more information.
回答4:
you should try to kill the mysql/sql service
on you computer first and than tray to kill the the program you are runnen white the query.
hope it will work for you
来源:https://stackoverflow.com/questions/15932058/query-is-locking-tables-cant-kill-that-process