Rumah > Artikel > pangkalan data > Bagaimana untuk Menyelesaikan Ralat \"Lock Wait Timeout Exceeded\" pada Jadual MySQL?
Menyelesaikan masalah "Lock Wait Timeout Exeeded" pada Jadual MySQL
Menghadapi ralat "Lock wait timeout exceeded" apabila mencuba operasi pangkalan data boleh menunjukkan transaksi tersekat dalam jadual sasaran. Isu ini sering timbul disebabkan oleh pertanyaan yang tidak lengkap, seperti kehilangan klausa WHERE, yang secara tidak sengaja boleh mengemas kini berbilang baris atau berulang kali mengemas kini lajur yang sama.
Untuk menyelesaikan isu ini dalam jadual InnoDB, di mana transaksi dimulakan secara tersirat, kita boleh menggunakan langkah berikut:
Semak Running Threads:
Mulakan dengan memeriksa thread yang sedang berjalan menggunakan SHOW PROCESSLIST; perintah. Ini akan memaparkan senarai urutan, termasuk ID dan masa pelaksanaannya.
Kenalpasti Benang Terperangkap:
Cari urutan yang telah berjalan untuk masa yang luar biasa lama atau berada dalam keadaan "terkunci". Urutan ini mungkin bertanggungjawab untuk transaksi tersekat.
Bunuh Benang Terperangkap:
Setelah utas masalah dikenal pasti, ia boleh ditamatkan menggunakan arahan KILL diikuti dengan IDnya. Contohnya:
KILL 115;
Melaksanakan arahan ini akan menamatkan sambungan yang dikaitkan dengan benang tersekat, dengan berkesan melepaskan sebarang kunci yang dipegangnya.
Selepas membunuh benang yang tersekat, jadual harus beroperasi semula. Pertanyaan mudah harus dilaksanakan seperti biasa dan operasi manipulasi indeks, seperti menjatuhkan indeks, akan berjaya.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \"Lock Wait Timeout Exceeded\" pada Jadual MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!