MySQL server has gone away

Bazen forum sitelerinizde aşağıdakine benzer bir hata alabilirsiniz. Bu hata bazende wordpress gibi sitelerinizde ortaya çıkabilir. Bu bir fonksiyonel hata değildir. Fonksiyonel hata dememiz için dosyaların bize hata vermesi gerekir. Server kaynaklı sistemsel hatalar sınıfındadır.

Hata:

UPDATE datastore SET
data = data - 2,
data = IF(data < 0, 0, data)
WHERE title = 'mailqueue';

MySQL Error : MySQL server has gone away
Error Number : 2006
Date : Friday, February 1st 2008 @ 02:23:01 AM
Script :
Referrer :
Classname : vB_Database

Neden böyle bir hata alırsınız?
Hatanın bilindik bir sebebi sunucunun geç yanıt vermesidir. Sunucu geç yanıt verirse bağlantıyı koparır ve bu hatayı verir. Bunu düzeltmek için sunucunun neden bağlantıyı geç yanıtladığını araştırmak en önemli nedendir. Onun haricinde sunucunuzdaki my.cnf dosyasında değişiklik yapmanız gerekiyor. Ama bunu yapabilmek için server yöneticisi konumunda olmak ve az da olsa ssh kullanmayı bilmek gerekir. Root olarak giriş yaptıktan sonra; my.cnf dosyasını /etc/my.cnf dosyası açarak içinde aşağıdaki kodu eklemeniz lazım.

wait_timeout = 300

Hatanın bir diğer sebebi sunucuya büyük boyutlu sorgular yollamadan kaynaklanır. (Genelde ağır temalar ve çok sorgu yollayan eklentiler buna sebep olabilir) Örneğin bir forum sitesinde alt alta hazırlanmış onlarca çeşitli forum başlığı, üç-beş forum başlığına göre daha fazla sorgu yapar. Bu durumda sitemizi konfigure edebilir veya server yöneticisi isek my.cnf dosyasın da “max_allowed_packet =” kısmını bulun genelde karşısında 1M yazar siz bu değeri arttırın.

mySQL 4.0 üstü sürüm kullanıyorsanız;

 [mysqld]
  # Allow packets up to 1M
  max_allowed_packet= 1M

Eski sürüm ise;

[mysqld]
  # Allow packets up to 1M
  set-variable = max_allowed_packet= 1M