Menyelesaikan masalah Ralat "Lock Wait Timeout Exceeded" MySQL (Walaupun Tanpa Transaksi)
Ralat "Tamat masa menunggu kunci melebihi; cuba mulakan semula transaksi" secara tidak dijangka boleh muncul walaupun dalam kod tanpa transaksi yang jelas. Ini selalunya disebabkan oleh tingkah laku penguncian tersirat MySQL. Begini cara untuk menangani masalah ini:
Kenalpasti Jadual Berkunci: Gunakan arahan show open tables where in_use > 0;
untuk menentukan jadual yang sedang dipegang di bawah kunci.
Cari Proses Penyebab: Jalankan show processlist;
untuk mendedahkan proses khusus yang bertanggungjawab untuk memegang kunci.
Buka Kunci Paksa (Gunakan dengan Berhati-hati): Sebagai pilihan terakhir, anda boleh membuka kunci jadual secara paksa. Ini biasanya tidak digalakkan, tetapi kadangkala perlu. Gunakan kill <process_id>;
menggantikan <process_id>
dengan ID dari langkah 2 untuk menamatkan proses kesalahan.
Mulakan Semula Pelayan MySQL: Selepas buka kunci paksa (jika digunakan), mulakan semula pelayan MySQL anda untuk memastikan keadaan sistem bersih dan lepaskan sebarang sumber yang berlarutan.
Uji Semula Pertanyaan Anda: Setelah pelayan dimulakan semula, cuba semula kenyataan KEMASKINI anda. Jika ralat berterusan, periksa kod aplikasi anda dengan teliti untuk melihat kemungkinan senario penguncian yang tidak diingini.
Langkah ini menyediakan pendekatan sistematik untuk menyelesaikan ralat "Tamat masa menunggu kunci melebihi", walaupun dalam situasi di mana anda tidak menguruskan urus niaga secara langsung. Ingatlah untuk berhati-hati apabila menggunakan kaedah buka kunci paksa.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Lock Wait Timeout Melebihi' MySQL Tanpa Transaksi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!