方案一
在mysql中數據庫information_schema中查詢下面三張表
select * from innodb_trx; ## 當前運行的所有事務
select * from innodb_locks; ## 當前出現的鎖
select * from innodb_lock_waits; ## 鎖等待的對應關系
在innodb_trx中找到被鎖線程的id,kill掉
kill xxxx
方案二、根據命令show processlist查詢起因
命令show processlist詳解
或者使用select * from information_schema.`PROCESSLIST`;進行查詢
1、id:標識
2、User: 顯示當前用戶,如果不是 root ,這個命令就只顯示你權限范圍內的 sql 語 句
3、host:顯示這個語句是從哪個 ip 的哪 個端口上發出的,可以用來追蹤出問題語句的用戶
4、db:顯示這個進程目前連接的是 哪個數據庫
5、Command :顯示當前連接的執行的命令,一般就是休眠( sleep ),查詢( query ),連接( connect ).
6、Time:此這個狀態持續的時間,單位是秒
7、State列:顯示使用當前連接的 sql 語句的狀態,很重要的列,后續會有所有的狀態的描述。請注意, state 只是語句執行中的某一個狀態,一個 sql 語 句,以查詢為例,可能需要經過 copying to tmp table , Sorting result , Sending data 等狀態才可以完成。
8、Info:顯示這個 sql 語 句,因為長度有限,所以長的 sql 語句就顯示不全,但是是一個判斷問題語句的重要依據