Beberapa alasan umum lainnya untuk server MySQL telah hilang adalah:
-
Anda (atau administrator db) telah mematikan utas yang sedang berjalan dengan pernyataan KILL atau perintah bunuh mysqladmin.
-
Anda mencoba menjalankan kueri setelah menutup koneksi ke server. Ini menunjukkan kesalahan logika dalam aplikasi yang harus diperbaiki.
-
Aplikasi klien yang berjalan pada host yang berbeda tidak memiliki hak istimewa yang diperlukan untuk terhubung ke server MySQL dari host tersebut.
-
Anda mendapat batas waktu dari koneksi TCP/IP di sisi klien. Ini mungkin terjadi jika Anda telah menggunakan perintah:mysql_options(..., MYSQL_OPT_READ_TIMEOUT,...) atau mysql_options(..., MYSQL_OPT_WRITE_TIMEOUT,...). Dalam hal ini meningkatkan batas waktu dapat membantu memecahkan masalah.
-
Anda mengalami batas waktu di sisi server dan koneksi ulang otomatis di klien dinonaktifkan (tanda koneksi ulang dalam struktur MYSQL sama dengan 0).
-
Anda menggunakan klien Windows dan server telah memutuskan koneksi (mungkin karena wait_timeout kedaluwarsa) sebelum perintah dikeluarkan.
-
Masalah pada Windows adalah bahwa dalam beberapa kasus MySQL tidak mendapatkan error dari OS saat menulis ke koneksi TCP/IP ke server, tetapi malah mendapatkan error saat mencoba membaca jawaban dari koneksi.
-
Solusi untuk ini adalah melakukan mysql_ping() pada koneksi jika sudah lama sejak kueri terakhir (inilah yang dilakukan Konektor/ODBC) atau mengatur wait_timeout di server mysqld begitu tinggi sehingga dalam praktiknya tidak pernah keluar.
-
Anda juga bisa mendapatkan kesalahan ini jika Anda mengirim kueri ke server yang salah atau terlalu besar. Jika mysqld menerima paket yang terlalu besar atau rusak, itu mengasumsikan bahwa ada yang tidak beres dengan klien dan menutup koneksi. Jika Anda membutuhkan kueri besar (misalnya, jika Anda bekerja dengan kolom BLOB besar), Anda dapat meningkatkan batas kueri dengan menyetel variabel max_allowed_packet server, yang memiliki nilai default 4 MB. Anda mungkin juga perlu meningkatkan ukuran paket maksimum di ujung klien. Informasi lebih lanjut tentang pengaturan ukuran paket diberikan di Bagian B.5.2.10, “Paket Terlalu Besar”.
-
Pernyataan INSERT atau REPLACE yang menyisipkan banyak baris juga dapat menyebabkan kesalahan semacam ini. Salah satu dari pernyataan ini mengirimkan satu permintaan ke server terlepas dari jumlah baris yang akan dimasukkan; dengan demikian, Anda sering dapat menghindari kesalahan dengan mengurangi jumlah baris yang dikirim per INSERT atau REPLACE.
-
Anda juga mendapatkan koneksi yang hilang jika Anda mengirim paket 16MB atau lebih besar jika klien Anda lebih tua dari 4.0.8 dan server Anda 4.0.8 ke atas, atau sebaliknya.
-
Mungkin juga untuk melihat kesalahan ini jika pencarian nama host gagal (misalnya, jika server DNS yang menjadi sandaran server atau jaringan Anda mati). Ini karena MySQL bergantung pada sistem host untuk resolusi nama, tetapi tidak memiliki cara untuk mengetahui apakah itu berfungsi—dari sudut pandang MySQL, masalahnya tidak dapat dibedakan dari batas waktu jaringan lainnya.
-
Anda mungkin juga melihat kesalahan server MySQL telah hilang jika MySQL dimulai dengan opsi --skip-networking.
-
Masalah jaringan lain yang dapat menyebabkan kesalahan ini terjadi jika port MySQL (default 3306) diblokir oleh firewall Anda, sehingga mencegah koneksi sama sekali ke server MySQL.
-
Anda juga dapat menemukan kesalahan ini dengan aplikasi yang melakukan fork proses anak, yang semuanya mencoba menggunakan koneksi yang sama ke server MySQL. Ini dapat dihindari dengan menggunakan koneksi terpisah untuk setiap proses turunan.
-
Anda menemukan bug yang menyebabkan server mati saat menjalankan kueri.
Periksa tautan ini:Hilang