MySQL Server Telah Pergi: Menyelidiki 'General error: 2006' Enigma
Apabila melakukan sisipan pukal ke dalam pangkalan data MySQL, ditakuti "SQLSTATE[HY000]: Ralat umum: 2006 pelayan MySQL telah hilang" boleh muncul. Isu yang kelihatan sukar difahami ini menghalang kelancaran pelaksanaan operasi pangkalan data. Untuk membongkar rahsianya, kami memulakan perjalanan untuk memahami ralat samar ini dan meneroka penyelesaian yang berpotensi.
Menyingkap Punca Tersembunyi: Tunggu_masa tamat
Pelayan "MySQL mempunyai hilang" ralat selalunya berpunca daripada had tamat masa. Secara khusus, ia berasal daripada pembolehubah MySQL bernama wait_timeout. Pembolehubah ini menentukan masa (dalam saat) MySQL akan sabar menunggu aktiviti klien sebelum menamatkan sambungan.
Secara lalai, tunggu_masa tamat ditetapkan kepada 30 saat pada hos kongsi. Walau bagaimanapun, apabila operasi pangkalan data melebihi had masa ini, sambungan akan ditamatkan secara tiba-tiba, membawa kepada ralat yang disebutkan di atas.
Menyelesaikan Isu: Melaraskan tunggu_masa tamat
Untuk menyelesaikan masalah ini isu, kami perlu melanjutkan masa menunggu untuk menampung tempoh operasi pangkalan data kami. Ini boleh dicapai dengan mengeluarkan pertanyaan "SET session wait_timeout=28800", yang menetapkan wait_timeout untuk sesi semasa kepada 28800 saat (8 jam).
Pertimbangan Tambahan: Interactive Timeout
Dalam senario tertentu, anda juga mungkin perlu mengubah suai pembolehubah interactive_timeout bersama wait_timeout. Pembolehubah ini mengawal tempoh maksimum untuk sambungan interaktif terbiar. Jika interactive_timeout lebih rendah daripada masa pelaksanaan operasi, sambungan akan ditutup secara tiba-tiba, mengakibatkan ralat yang sama.
Pelaksanaan: Kod PHP
Untuk melaksanakan penyelesaian ini dalam PHP, gunakan contoh kod berikut:
<code class="php">$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE); echo "<pre class="brush:php;toolbar:false">"; var_dump($results); echo ""; $results = $db->query("SET session wait_timeout=28800", FALSE); // UPDATE - this is also needed $results = $db->query("SET session interactive_timeout=28800", FALSE); $results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE); echo "
"; var_dump($results); echo "";
Sebelum melaksanakan operasi pangkalan data anda, tambahkan baris ini pada skrip PHP anda untuk melaraskan tetapan tamat masa. Ini membolehkan operasi selesai tanpa menghadapi ralat "Pelayan MySQL telah hilang".
Atas ialah kandungan terperinci Mengapa Pelayan MySQL saya Terus Berkata \'Ralat umum: Pelayan MySQL 2006 telah hilang\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!