前言:
今天發(fā)現(xiàn)服務器出現(xiàn)一個莫名奇妙的問題, 在執(zhí)行SQL語句
delete from product_image WHERE ( product_id = ? )
時報錯 :
com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
; SQL []; Lock wait timeout exceeded; try restarting transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
很奇怪 , 左思右想這條SQL能出什么問題啊 , 后來在網上查了一堆資料后發(fā)現(xiàn)原來是線程堵塞造成了鎖超時.
解決方法如下:
數(shù)據庫執(zhí)行SQL語句 查詢是哪個線程堵住了
SELECT * FROM information_schema.innodb_trx
查看trx_rows_locked 這一列 如果是大于0的話,說明是堵塞住了, 然后查對應的trx_mysql_thread_id 列
看到一個線程ID,
然后執(zhí)行SQL , kill 線程ID 即可
在此小計一下.....