MySql報錯:Lock wait timeout exceeded: try restadina transaction

一纸年华發表於2024-05-21

  這次是在Navicat上覆制了一個表結構和資料準備備份一下,然後要用語句批次處理資料,結果導致專案上的更新操作報這個錯誤。
  原因是因為表中的資料量太大,複製表一時半會卡到那了。
  於是我在網上搜尋瞭如下辦法。
image

嘗試在資料庫中殺死執行緒來終止複製表的操作。

SELECT * FROM information_schema.INNODB_TRX

SELECT * FROM information_schema.`PROCESSLIST` WHERE id = 168997   
SELECT * FROM information_schema.`PROCESSLIST` WHERE id = 168923

kill 168997
kill 168923


SELECT * FROM information_schema.`INNODB_LOCK_WAITS`;

SHOW OPEN TABLES WHERE `Table` = 'material_list' AND `Database` = 'mes';
SHOW OPEN TABLES WHERE `Table` = 'mes_order' AND `Database` = 'mes';

show processlist

  執行kill語句後沒反應,我以為是語句不起作用。後面過了一會複製表的操作才終止,看來殺死程序也需要時間。後面就正常了。

相關文章