解決 MySQL 中的「Lock Wait Timeout Exceeded」錯誤
在 MySQL 中遇到「鎖定等待逾時;嘗試重新啟動事務」錯誤,即使沒有明確使用事務,也是一個常見問題,有多種潛在原因。
一個常見的罪魁禍首是另一個程序持有的表鎖。若要辨識鎖定的表,請使用以下指令:
<code class="language-sql">SHOW OPEN TABLES WHERE In_use > 0;</code>
此查詢顯示目前鎖定的表。 如果您的目標表出現,下一步是使用以下命令來尋找負責的進程:
<code class="language-sql">SHOW PROCESSLIST;</code>
這顯示活動進程。找到鎖定表的進程 ID (PID) 並使用以下命令終止它:
<code class="language-sql">KILL <process_id>;</code>
另一個場景涉及隱式交易。 使用以下命令檢查這些:
<code class="language-sql">SELECT @@INNODB_TRX_ID;</code>
非零結果表示活躍的隱式交易。 強制提交:
<code class="language-sql">COMMIT;</code>
如果這些步驟失敗,重新啟動 MySQL 伺服器或最佳化表可能是必要的解決方案。 根據您的特定 MySQL 版本和需求,可以使用各種命令來實現表格最佳化。
以上是為什麼即使沒有事務,我也會收到'超出鎖定等待超時”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!