Database general error: 2006 server MySQL sudah tidak ada


24

Baru-baru ini saya mulai mendapatkan kesalahan setiap kali saya mencoba dan menambahkan konten apa pun jenisnya. Ini adalah kesalahan yang muncul di browser:

Pengecualian tanpa tertangkap tambahan dilemparkan saat menangani pengecualian.

PDOException Asli: SQLSTATE [HY000]: Kesalahan umum: 2006 Server MySQL telah hilang: SELECT COUNT (cid) DARI {comment} WHERE status =: status; Array ([: status] => 0) di comment_count_unpublished () (baris 313 dari /Applications/MAMP/htdocs/modules/comment/comment.mcomule).

Tambahan

PDOException: SQLSTATE [HY000]: Kesalahan umum: 2006 Server MySQL telah hilang: INSERT INTO {watchdog} (uid, jenis, pesan, variabel, tingkat keparahan, tautan, lokasi, pengarah, nama host, stempel waktu) VALUES (: db_insert_placeholder_0,: db_insert_placeholder_0,: db_insert_placeholder_0,: db_insert_placeholder_0,: : Array ([: db_insert_placeholder_0] => 1 [: db_insert_placeholder_1] => php [: db_insert_placeholder_2] =>% type:! Pesan dalam% function (baris% baris% file). [: Db_insert_placeholder_3] => a: 6: { s: 5: "% type"; s: 12: "PDOException"; s: 8: "! message"; s: 154: "SQLSTATE [HY000]: Kesalahan umum: 2006 Server MySQL telah hilang: PILIH COUNT (cid) DARI {comment} WHERE status =: status; Array ([: status] = & gt; 0) "; s: 9:"% function "; s: 27:" comment_count_unpublished () "; s: 5:"% file "; s: 56:" / Aplikasi / MAMP /htdocs/modules/comment/comment.module";s#:"%line";i:313;s:14:"severity_level";i:3;} [: db_insert_placeholder_4] => 3 [: db_insert_placeholder_5] = > [: db_insert_placeholder_6] =>http: // localhost: 8888 /? q = node% 2Fadd% 2Farcade-project & amp ; [: db_insert_placeholder_7] => http: // localhost: 8888 / [: db_insert_placeholder_8] => 127.0.0.1 [: db_insert_placeholder_9] => 1338336955) di dblog_watchdog () (baris 154 dari / Aplikasi / MAMP / hmpog / modules / modul / dblog / modules / dblog) dblog.module).

Saya juga mendapatkan kesalahan berikut di file kesalahan php saya:

PHP Fatal error: Pengecualian tanpa tertangkap 'PDOException' dengan pesan 'SQLSTATE [HY000]: Kesalahan umum: 2006 server MySQL telah hilang' di /Applications/MAMP/htdocs/includes/database/database.inc:136

Stack trace:
0 /Applications/MAMP/htdocs/includes/database/database.inc(2136): PDOStatement-> execute (Array)
1 /Applications/MAMP/htdocs/includes/database/database.inc(664): DatabaseStatementBase- > mengeksekusi (Array, Array)
2 /Applications/MAMP/htdocs/includes/database/database.inc(2315): DatabaseConnection-> query ('SELECT expire, ...', Array, Array)
3 / Aplikasi / MAMP / htdocs / include / lock.inc (167): db_query ('SELECT kedaluwarsa, ...', Array)
4 /Applications/MAMP/htdocs/includes/lock.inc(146): lock_may_be_available ('theme_registry: ...' )
5 /Applications/MAMP/htdocs/includes/theme.inc(447): lock_acquire ('theme_registry: ...')
6 /Applications/MAMP/htdocs/includes/bootstrap.inc(427): ThemeRegistry-> set ( Array)
7 [fungsi internal]: DrupalCacheArray -> __ destruct ()
8 {main} dilemparkan ke /Applications/MAMP/htdocs/includes/database/database.inc on line 2136

Saya mengalami sedikit kesulitan menguraikan pesan kesalahan ini. Adakah yang bisa membantu saya memahami apa yang terjadi di sini?

Jawaban:


31

9 kali dari 10 kesalahan ini disebabkan oleh max_allowed_packetpengaturan yang tidak cukup besar di file my.cnf server MySQL Anda.

Default standar untuk MAMP dalam pengalaman saya adalah 1M, yang biasanya tidak cukup untuk Drupal (terutama mengingat ukuran beberapa string cache yang dihasilkannya).

Coba tingkatkan pengaturan itu secara bertahap untuk melihat apakah kesalahannya hilang. Saya yakin pencarian google cepat akan memberi tahu Anda bagaimana melakukannya di MAMP.


Untungnya kasus saya tidak masuk dalam kategori 1 kali dari 10. Rekomendasi Anda bekerja seperti pesona! Terima kasih!
Mike2012

Menghadapi kesalahan yang sama di windows. Telah mengkonfigurasi apache, mysql dan php stack secara lokal ... tolong panduan
Prerit Mohan

Dan dalam hal shared hosting, apa yang bisa saya lakukan?
mohammed amine bourkadi

Hubungi tuan rumah Anda, minta mereka untuk melakukan perubahan. Jika mereka tidak bisa / tidak mau, Anda perlu memutuskan apakah tuan rumah ini adalah yang tepat untuk Anda @mohammedaminebourkadi.
Clive

6

Kesalahan MySQL / MariaDB ini:

Kesalahan: 2006 ( CR_SERVER_GONE_ERROR) - Server MySQL telah hilang

berarti pada dasarnya klien tidak dapat mengirim pertanyaan ke server .

Ini bisa terjadi karena kesalahan sementara, permintaan SQL yang terlalu besar atau tidak valid, kesalahan konfigurasi server Anda atau keterbatasan penyedia hosting Anda.

Secara umum kesalahan ini dapat disebabkan oleh beberapa hal, seperti:

  • kueri ke server salah atau terlalu besar,

    Solusi: Tingkatkan max_allowed_packetvariabel .

    Catatan: Pastikan variabel berada di bawah [mysqld]bagian, bukan [mysql].

    Catatan: Jangan lupa me-restart server MySQL / MariaDB.

  • Anda mendapat batas waktu dari koneksi TCP / IP di sisi klien.

    Solusi: Tingkatkan wait_timeoutvariabel .

  • Anda mencoba menjalankan kueri setelah koneksi ke server ditutup.

    Solusi: Kesalahan logika dalam aplikasi harus diperbaiki.

  • Pencarian nama host gagal (misalnya masalah server DNS), atau server sudah mulai dengan --skip-networkingopsi.

    Kemungkinan lain adalah bahwa firewall Anda memblokir port MySQL (misalnya, 3306 secara default).

  • Utas yang berjalan telah terbunuh, jadi coba lagi.

  • Anda telah menemukan bug di mana server mati saat menjalankan kueri.

  • Klien yang menjalankan host yang berbeda tidak memiliki hak istimewa yang diperlukan untuk terhubung.

  • Dan masih banyak lagi, jadi pelajari lebih lanjut di: B.5.2.9 Server MySQL telah hilang .

Untuk perincian lebih lanjut, silakan periksa MySQL atau log sistem Anda (mis /var/log/messages.).

Untuk men-debug server atau klien MySQL, silakan periksa: 26.5 Debugging dan Porting MySQL .


Jika Anda mencoba mengimpor database dari file menggunakan drushatau mysqlperintah, Anda dapat:

  • Tambahkan opsi gaya ( -f) untuk mysqlmelanjutkan dan menjalankan sisa kueri.

    Ini berguna jika database memiliki beberapa permintaan besar terkait dengan cache yang besar, tetapi tidak relevan.

    Menggunakan drush, coba:cat foo.sql | $(drush sqlconnect) -f

  • Coba terapkan --max-allowed-packetopsi untuk mysqldengan nilai yang lebih kecil.

  • Tingkatkan max_allowed_packetdanwait_timeout dalam konfigurasi server Anda (mis ~/.my.cnf.).

  • Buang database asli lagi dengan menggunakan --skip-extended-insertopsi untuk memecah pertanyaan besar. Kemudian impor file itu lagi.


Lihat juga: ERROR 2006 (HY000): Server MySQL telah hilang


3

Jawaban yang diberikan oleh Clive biasanya, tetapi mungkin ada penyebab tambahan, terutama dengan simpul menambahkan bentuk.

Node add form biasanya besar, dan memprosesnya dapat menggunakan banyak memori (terutama jika ada pemrosesan gambar selama penyimpanan, seperti dengan modul pemangkasan). Jika server kehabisan memori, proses mysqld mungkin terbunuh yang menghasilkan pesan "hilang" yang sama.

Petunjuknya adalah untuk melihat log server. Pada mesin CentOS, Anda dapat melihat entri berikut di / var / log / messages

Jan 1 00:00:00 kernel servername: Kehabisan memori: Proses kill XXXX (mysqld) skor XXX atau korbankan anak
Jan 1 00:00:00 kernel servername: Proses terbunuh XXXX, UID XX, (mysqld) total-vm: XXXkB , anon-rss: XXXkB, file-rss: XXkB

Solusinya di sini adalah dengan menambah RAM, atau menambah / menambah swap.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.