Apabila melakukan operasi pukal, seperti memasukkan ratusan rekod ke dalam pangkalan data MySQL, anda boleh menghadapi ralat berikut:
[PDOException] SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
Ralat ini biasanya timbul disebabkan oleh isu tamat masa yang mana pelayan MySQL memutuskan sambungan anda selepas tempoh tidak aktif yang ditetapkan. Untuk menyelesaikan isu ini, fokus pada melaraskan dua tetapan utama:
Tetapan wait_timeout menentukan tempoh (dalam saat) yang MySQL akan tunggu sebelum menamatkan sambungan yang tidak aktif. Secara lalai, nilai ini ditetapkan kepada 30 saat yang agak rendah pada persekitaran pengehosan dikongsi.
Untuk meningkatkan tunggu_masa tamat, keluarkan pertanyaan berikut pada permulaan operasi anda:
SET session wait_timeout=28800;
Ini arahan menetapkan tunggu_masa tamat kepada 28800 saat, iaitu lebih kurang 8 jam.
Dalam sesetengah kes, anda mungkin juga perlu melaraskan tetapan interactive_timeout. Tetapan ini menentukan bilangan saat sebelum MySQL menamatkan sambungan interaktif.
Untuk mengubah suai interaktif_masa tamat, laksanakan pertanyaan berikut selepas melaraskan tunggu_masa tamat:
SET session interactive_timeout=28800;
Untuk mengesahkan bahawa tetapan telah berjaya diubah suai, anda boleh melaksanakan pertanyaan berikut sebelum dan selepas membuat perubahan:
<code class="php">$results = $db->query("SHOW VARIABLES LIKE '%timeout%'", TRUE);</code>
Sambil meningkatkan tetapan tamat masa boleh menyelesaikan isu segera, ia adalah penting untuk mempertimbangkan perkara berikut:
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan \'Ralat Umum: Pelayan MySQL 2006 Telah Pergi\' Semasa Operasi Pukal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!