MySQL’de çalışırken karşılaşılan hata kodları, veritabanı yönetiminde sıkça karşılaşılan sorunlardır. Bu yazıda, yaygın MySQL hata kodlarını ve bu hataların nasıl çözüleceğini ele alacağız.
#### 1. Hata Kodu 1064: Sözdizimi Hatası
**Hata Mesajı:**
“`sql
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘from Person’ at line 2.
“`
**Çözüm:**
Bu hata, SQL sorgusunda sözdizimi hatası olduğunu gösterir. Hata mesajında belirtilen kısım, sorgunun nerede hata verdiğini gösterir. Örneğin, fazladan bir virgül veya eksik bir parantez bu hataya neden olabilir. Sorguyu dikkatlice inceleyerek hatayı bulmalı ve düzeltmelisiniz.
#### 2. Hata Kodu 1175: Güvenli Güncelleme Hatası
**Hata Mesajı:**
“`sql
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.
“`
**Çözüm:**
Bu hata, güvenli güncelleme modunda (`SQL_SAFE_UPDATES`) bir tabloyu anahtar sütun kullanmadan güncellemeye çalıştığınızda ortaya çıkar. Bu modu geçici olarak devre dışı bırakmak için:
“`sql
SET SQL_SAFE_UPDATES = 0;
“`
Güncelleme işlemi tamamlandıktan sonra güvenli güncelleme modunu tekrar etkinleştirebilirsiniz:
“`sql
SET SQL_SAFE_UPDATES = 1;
“`
#### 3. Hata Kodu 1215: Yabancı Anahtar Eklenemiyor
**Hata Mesajı:**
“`sql
Error Code: 1215. Cannot add foreign key constraint.
“`
**Çözüm:**
Bu hata, yabancı anahtar eklenirken tabloların yapısının uygun olmadığını gösterir. Yabancı anahtarın hızlı bir şekilde kontrol edilebilmesi için, referans verilen tabloda bir indeks olması gerekir. Örneğin:
“`sql
CREATE INDEX `gt_eventdt` ON getTogethers (`eventDT`);
“`
Bu indeks oluşturulduktan sonra yabancı anahtar eklenebilir.
#### 4. Hata Kodu 1062: Yinelenen Giriş
**Hata Mesajı:**
“`sql
Error Code: 1062. Duplicate entry ’12’ for key ‘PRIMARY’.
“`
**Çözüm:**
Bu hata, birincil anahtar veya benzersiz bir sütuna yinelenen bir değer eklemeye çalıştığınızda ortaya çıkar. Çözüm olarak, birincil anahtar sütununu `AUTO_INCREMENT` yapabilir veya `INSERT IGNORE` kullanarak yinelenen kayıtları görmezden gelebilirsiniz:
“`sql
INSERT IGNORE INTO userDetails VALUES (NULL, ‘John’, ‘Doe’, 1);
“`
#### 5. Hata Kodu 2002, 2003: Bağlantı Kurulamıyor
**Hata Mesajı:**
“`sql
Error Code: 2002, 2003. Cannot connect to MySQL server.
“`
**Çözüm:**
Bu hata, MySQL sunucusuna bağlanılamadığını gösterir. Sunucunun çalışıp çalışmadığını kontrol edin, güvenlik duvarı ayarlarını gözden geçirin ve bağlantı noktasının (3306) açık olduğundan emin olun.
#### 6. Hata Kodu 126, 127, 134, 144, 145: Tablo Çökmüş
**Hata Mesajı:**
“`sql
Error Code: 126. Index file is crashed.
Error Code: 127. Record-file is crashed.
Error Code: 134. Record was already deleted.
Error Code: 144. Table is crashed and last repair failed.
Error Code: 145. Table was marked as crashed and should be repaired.
“`
**Çözüm:**
Bu hatalar, tablonun çöktüğünü ve onarılması gerektiğini gösterir. MyISAM tabloları için `CHECK TABLE` ve `REPAIR TABLE` komutlarını kullanabilirsiniz:
“`sql
CHECK TABLE tablo_adi;
REPAIR TABLE tablo_adi;
“`
InnoDB tabloları için bu tür hatalar daha az yaygındır, ancak yine de tabloyu onarmak için `ALTER TABLE` kullanabilirsiniz.
#### 7. Hata Kodu 139: Tablo Tanımı Sınırı Aşıldı
**Hata Mesajı:**
“`sql
Error Code: 139. Table definition is too large.
“`
**Çözüm:**
Bu hata, tablo tanımının (sütun sayısı ve boyutu) belirli bir sınırı aştığını gösterir. Çözüm olarak, şemayı yeniden düşünmeli ve tabloyu normalize etmelisiniz. Ayrıca, tabloyu dikey olarak bölümleyebilirsiniz.
#### 8. Hata Kodu 1366: Karakter Seti Uyumsuzluğu
**Hata Mesajı:**
“`sql
Error Code: 1366. Incorrect string value.
“`
**Çözüm:**
Bu hata, istemci ve sunucu arasında karakter seti uyumsuzluğu olduğunda ortaya çıkar. Karakter seti ve sıralama ayarlarını kontrol ederek uyumlu hale getirmelisiniz.
#### Sonuç
MySQL’de karşılaşılan hata kodları, veritabanı yönetiminde sıkça karşılaşılan sorunlardır. Bu hataların nedenlerini anlamak ve doğru çözümleri uygulamak, veritabanı performansını ve güvenilirliğini artırır. Bir sonraki yazıda görüşmek üzere!