Veritabanı genel hatası: 2006 MySQL sunucusu kayboldu


24

Son zamanlarda, ne tür olursa olsun bir içerik eklemeye çalıştığımda her seferinde bir hata almaya başladım. Tarayıcıda görünen hatadır:

İstisna işlenirken yakalanan ilave istisna.

Orijinal PDOException: SQLSTATE [HY000]: Genel hata: 2006 MySQL sunucusu kayboldu: COUNT (cid) 'den {comment} NEREDE BAŞLADI status =: status; Array ([: status] => 0) comment_count_unpublished () 'de (/Applications/MAMP/htdocs/modules/comment/comment.module satır 313).

Ek

PDOException: SQLSTATE [HY000]: Genel hata: 2006 MySQL sunucusu kayboldu: INSERT INTO {watchdog} (kullanıcı adı, tür, mesaj, değişkenler, önem derecesi, bağlantı, konum, başvuru sahibi, ana bilgisayar adı, zaman damgası) VALUES (: db_insert_placeholder_0,: db_insert_place_1 ,: db_insert_placeholder_2,: db_insert_placeholder_3,: db_insert_placeholder_4,: db_insert_placeholder_5,: db_insert_placeholder_6,: db_insert_placeholder_7,: db_insert_placeholder_8,: db_insert_place; Dizi ([: db_insert_placeholder_0] => 1 [: db_insert_placeholder_1] => php [: db_insert_placeholder_2] =>% türünde:!% İşlevinde ileti (% satırında% satır dosyası). [: Db_insert_placeholder_3] => a: 6: { s: 5: "% type"; s: 12: "PDOException"; s: 8: "! message"; s: 154: "SQLSTATE [HY000]: Genel hata: 2006 MySQL sunucusu gitti: SELECT COUNT (cid) FROM {comment} NEREDE WHERE status =: status; Array ([: status] = & gt; 0) "; s: 9:"% function "; s: 27:" comment_count_unpublished () "; s: 5:"% file "; s: 56:" / Uygulamalar / MAMP /htdocs/modules/comment/comment.module";s:5:"%line";i:313;s:14:"severity_level";i:3;} [: db_insert_placeholder_4] => 3 [: db_insert_placeholder_5] => 3 [: db_insert_placeholder_5] = > [: db_insert_placeholder_6] =>http: // localhost: 8888 / - q = düğüm% 2Fadd% 2Farcade-project & amp ; [: db_insert_placeholder_7] => http: / dblog.module).

Ayrıca benim php hata dosyamda aşağıdaki hatayı alıyorum:

PHP Ölümcül hata: 'SQLSTATE [HY000] iletisiyle' PDOException 'özel durumu yakalandı: Genel hata: 2006 / MySQL sunucusu kayboldu' /Applications/MAMP/htdocs/includes/database/database.inc:2136

Yığın izi:
0 /Uygulamalar/MAMP/htdocs/includes/database/database.inc(2136): PDOStatement-> yürüt (Array)
1 /Applications/MAMP/htdocs/includes/database/database.inc(664): DatabaseStatementBase- > yürüt (Array, Array)
2 /Uygulamalar/MAMP/htdocs/includes/database/database.inc(2315): DatabaseConnection-> query ('SELECT süresinin dolması, ...', Dizi, Dizi)
3 / Uygulamalar / MAMP / htdocs / include / lock.inc (167): db_query ('SELECT süresi doluyor, ...', Dizi)
4 / Uygulamalar / MAMP/htdocs/includes/lock.inc( 146): lock_may_be_available ('theme_registry: ...' )
5 /Uygulamalar/MAMP/htdocs/includes/theme.inc(447): lock_acquire ('theme_registry: ...')
6 / Uygulamalar/MAMP/htdocs/ includes/bootstrap.inc( 427): ThemeRegistry-> set ( Dizi)
7 [dahili işlev]: DrupalCacheArray -> __ destruct ()
8 {ana} 2136 satırında /Applications/MAMP/htdocs/includes/database/database.inc dosyasına atıldı

Bu hata mesajlarını deşifre etmekle ilgili biraz sorun yaşıyorum. Biri burada neler olduğunu anlamama yardımcı olabilir mi?

Yanıtlar:


31

10'dan 9 kez bu hataya max_allowed_packetMySQL sunucunuzun my.cnf dosyasındaki yeterince büyük olmayan bir ayar neden olur .

Deneyimime göre MAMP için standart varsayılan, 1M'dir, bu genellikle Drupal için yeterli değildir (özellikle ürettiği önbellek dizelerinin büyüklüğünü göz önünde bulundurarak).

Hatanın kaybolduğunu görmek için bu ayarı kademeli olarak artırmayı deneyin. Eminim hızlı bir google araması size bunu MAMP'ta nasıl yapacağınızı söyleyecektir.


Neyse ki benim davam 10 kategoriden 1'e girmedi. Önerileriniz bir cazibe gibi çalıştı! Teşekkürler!
Mike2012

Pencerelerde de aynı hatayla karşılaşılıyor. Yerel olarak apache, mysql ve php yığınını yapılandırdınız mı ... lütfen rehberlik edin
Prerit Mohan

Ve paylaşılan hosting durumunda ne yapabilirim?
mohammed amin bourkadi

Ana makinenize başvurun, değişiklik yapmasını isteyin. Eğer yapamazlar / yapamazlarsa, bu ev sahibinin sizin için @mohammedaminebourkadi'nin doğru olup olmadığına karar vermeniz gerekir.
Clive

6

Bu MySQL / MariaDB hatası:

Hata: 2006 ( CR_SERVER_GONE_ERROR) - MySQL sunucusu kayboldu

Temel olarak istemcinin sunucuya bir soru gönderemediği anlamına gelir .

Bu geçici bir aksaklık, çok büyük veya geçersiz SQL sorgusu, sunucunuzun yanlış yapılandırılması veya barındırma sağlayıcınızın sınırlandırılmasıyla olabilir.

Genel olarak bu hata, aşağıdaki gibi birkaç şeyin sonucu olabilir:

  • Sunucuya yapılan bir sorgu yanlış veya çok büyükse,

    Çözüm: Değişken artırınmax_allowed_packet .

    Not: Değişkenin [mysqld]bölüm altında olmadığından emin olun [mysql].

    Not: MySQL / MariaDB sunucusunu yeniden başlatmayı unutmayın.

  • İstemci tarafındaki TCP / IP bağlantısından zaman aşımına uğradınız.

    Çözüm: Değişken artırınwait_timeout .

  • Sunucuya bağlantı kapatıldıktan sonra bir sorgu çalıştırmayı denediniz.

    Çözüm: Uygulamadaki bir mantık hatası düzeltilmelidir.

  • Ana bilgisayar adı aramaları başarısız oldu (örneğin, DNS sunucusu sorunu) veya sunucu --skip-networkingseçeneği ile başlatıldı .

    Başka bir olasılık ise güvenlik duvarınızın MySQL portunu bloke etmesidir (örneğin, varsayılan olarak 3306).

  • Çalışan iplik öldürüldü, bu yüzden tekrar deneyin.

  • Sorgu yürütülürken sunucunun öldüğü bir hatayla karşılaştınız.

  • Farklı bir ana bilgisayarda çalışan bir istemci, bağlanmak için gerekli ayrıcalıklara sahip değil.

  • Ve daha fazlası, bu yüzden daha fazlasını öğrenin: B.5.2.9 MySQL sunucusu gitti .

Daha fazla ayrıntı için, lütfen MySQL'inizi veya sistem günlüklerini kontrol edin (örn. /var/log/messages).

MySQL sunucusunda veya istemcide hata ayıklamak için lütfen kontrol edin: 26.5 MySQL'de Hata Ayıklama ve Bağlantı .


Veritabanını drushveya mysqlkomutunu kullanarak dosyadan içe aktarmaya çalışıyorsanız , şunları yapabilirsiniz:

  • Sorguların geri kalanını devam ettirmek ve yürütmek -fiçin bir zorlama seçeneği ( ) ekleyin mysql.

    Veritabanının, önbellekle ilgili büyük, ancak yine de alakalı olmayan bazı büyük sorguları varsa kullanışlıdır.

    Kullanarak drush, deneyin:cat foo.sql | $(drush sqlconnect) -f

  • Küçük değerler --max-allowed-packetiçin seçeneği uygulamayı deneyin mysql.

  • max_allowed_packetwait_timeoutSunucunuzu yapılandırın ve artırın (örn. ~/.my.cnf).

  • --skip-extended-insertBüyük sorguları ayırmak için seçeneği kullanarak orijinal veritabanını tekrar boşaltın. Ardından dosyayı tekrar içe aktarın.


Ayrıca bakınız: ERROR 2006 (HY000): MySQL sunucusu kayboldu


3

@Clive'nin verdiği cevap normalde böyledir, ancak özellikle de düğüm ekleme formlarında ek bir neden olabilir.

Düğüm ekleme formları tipik olarak büyüktür ve bunları işlemek çok fazla bellek kullanabilir (özellikle kayıt sırasında kırpma modülleri gibi herhangi bir görüntü işleme varsa). Sunucuda bellek yetersiz kalıyorsa, mysqld işlemi kesilebilir, bu da aynı "gitmiş" mesajına neden olur.

Buradaki ipucu sunucu kayıtlarına bakmak. Bir CentOS makinesinde aşağıdaki girişi / var / log / messages'de görebilirsiniz.

1 Ocak 00:00:00 servername çekirdeği: Bellek yetersiz: XXXX (mysqld) skoru
öldüren XXX çocuğunu veya fedakar çocuğu öldürmek 1 Ocak 00:00:00 servername çekirdeği: XXXII, UID XX, öldürülen işlem XXX : (mysqld) total-vm: XXXkB , anon-rss: XXXkB, dosya-rss: XXkB

Buradaki çözüm ya daha fazla RAM eklemek ya da takas eklemek / arttırmaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.