mysql Lock wait timeout exceeded; try restarting transaction 錯誤解決

最近運行的項目中,出現 'Lock wait timeout exceeded; try restarting transaction' 報錯,致使出現一系列問題。

一直運行的很平穩,忽然出現這問題,比較難判斷哪裏出了問題。

先上網搜索,參考:
	關於MySQL的lock wait timeout exceeded解決方案
		https://segmentfault.com/a/1190000015314171

	記一次MySQL的Lock Wait Timeout exceeded異常
		https://lijh.dev/2019/03/13/%E8%AE%B0%E4%B8%80%E6%AC%A1MySQL%E7%9A%84Lock%20Wait%20Timeout%20exceeded%E5%BC%82%E5%B8%B8/

	MySql Lock wait timeout exceeded該如何處理?
		https://ningyu1.github.io/site/post/75-mysql-lock-wait-timeout-exceeded/

	Laravel Database——數據庫的 CRUD 操做源碼分析(未看)
		https://learnku.com/articles/6104/laravel-database-analysis-of-the-crud-operation-source-code-of-the-database

根據錯誤提示,以及上網搜索,獲得錯誤的緣由:
	因某些事務,致使了 mysql 表被鎖,後續又有新的事務,一些在等待以前的事務結束,等待時間超時,就提示該錯誤

解決方法:
	select * from information_schema.innodb_trx

	獲得 RUNNING 的事務 pid(致使阻塞的事務ID)

	而後在 mysql 命令行中,執行:kill pid

上面的解決方法,只是臨時解決下,根本的解決方法,是咱們須要定位到代碼中,致使該事務阻塞的緣由。

我這邊的代碼問題是:
	執行隊列代碼時,開啓了事務,中途因其餘服務,致使代碼終止,未進行回滾操做,因此事務一直運行,致使鎖表,從而致使後續的請求,全部關於該表的修改操做都等待,致使報錯!