Rumah > Artikel > pangkalan data > Cara Membetulkan Ralat \'Lock Wait Timeout Exeeded\' dalam MySQL: Membuka Kunci Jadual Terperangkap
Membuka kunci Jadual MySQL yang "Terperangkap": Menyelesaikan masalah "Lock Wait Timeout Exeeded"
Apabila menghadapi "Lock wait time out exceeded; cuba mulakan semula transaksi" semasa bekerja dengan jadual InnoDB dalam MySQL, kemungkinan transaksi telah tersekat. Berikut ialah cara untuk membetulkan jadual dan menyelesaikan transaksi yang tersekat:
1. Kenal pasti Transaksi Tersekat:
Jalankan arahan berikut dalam antara muka baris arahan MySQL atau melalui phpMyAdmin:
SHOW PROCESSLIST;
Ini akan memaparkan senarai benang yang sedang berjalan. Cari utas dengan masa pelaksanaan yang lama atau yang berada dalam keadaan "Tidur". ID urutan yang sepadan akan dipaparkan dalam lajur "Id".
2. Tamatkan Benang Terperangkap:
Setelah benang tersekat dikenal pasti, tamatkannya menggunakan arahan berikut dalam antara muka baris arahan:
KILL <thread_id>;
Ganti
3. Mulakan Semula Transaksi (Pilihan):
Jika transaksi masih aktif, mulakan semula untuk melepaskan sebarang kunci yang mungkin dipegangnya. Anda boleh melakukan ini dengan menjalankan arahan berikut:
START TRANSACTION; COMMIT;
4. Gugurkan Indeks (Jika Berkenaan):
Jika anda sebelum ini cuba menjatuhkan indeks pada jadual yang terjejas dan ia gagal disebabkan kunci, cuba lepaskannya semula selepas menamatkan benang tersekat dan mulakan semula transaksi .
ALTER TABLE <table_name> DROP INDEX <index_name>;
Dengan mengikut langkah ini, anda boleh membuka kunci jadual yang tersekat dan menyelesaikan ralat "Tamat masa menunggu kunci melebihi". Ingat untuk menyemak urutan yang sedang berjalan dengan kerap untuk mengenal pasti dan menamatkan sebarang kemungkinan transaksi tersekat untuk mengelakkan isu yang serupa pada masa hadapan.
Atas ialah kandungan terperinci Cara Membetulkan Ralat \'Lock Wait Timeout Exeeded\' dalam MySQL: Membuka Kunci Jadual Terperangkap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!