Her şeyden önce, anahtarların ve dizinlerin MySQL'de eşanlamlı olduğunu bilmelisiniz. CREATE TABLE Sözdizimi hakkındaki belgelere bakarsanız , şunları okuyabilirsiniz:
KEY
normalde eşanlamlıdır INDEX
. Anahtar öznitelik PRIMARY KEY
, KEY
bir sütun tanımında verildiği zaman da belirtilebilir . Bu, diğer veritabanı sistemleriyle uyumluluk için uygulanmıştır.
Şimdi, aldığınız türden bir hata iki şeye bağlı olabilir:
- MySQL sunucusundaki disk sorunları
- Bozuk anahtarlar / tablolar
İlk durumda, sorgunuza bir sınır eklemenin sorunu geçici olarak çözebileceğini göreceksiniz. Bunu sizin için yaparsa, muhtemelen tmp
yapmaya çalıştığınız sorguların boyutu için çok küçük bir klasörünüz vardır. Daha sonra tmp
daha büyük hale getirmeye veya sorgularınızı küçültmeye karar verebilirsiniz ! ;)
Bazen tmp
yeterince büyük olsa da yine de dolar, bu durumlarda manuel temizlik yapmanız gerekir.
İkinci durumda, MySQL verileriyle ilgili gerçek sorunlar vardır. Verileri kolayca yeniden ekleyebiliyorsanız, tabloyu bırakmanızı / yeniden oluşturmanızı ve verileri yeniden eklemenizi tavsiye ederim. Eğer yapamazsanız, TAMİR masasıyla masayı yerinde tamir etmeyi deneyebilirsiniz . Bu genellikle uzun bir süreçtir ve çok iyi başarısız olabilir.
Aldığınız tam hata mesajına bakın :
'FILEPATH.MYI' tablosu için yanlış anahtar dosyası; tamir etmeyi dene
Mesajda onu onarmaya çalışabileceğinizden bahsediyor. Ayrıca, aldığınız gerçek FILEPATH'a bakarsanız, daha fazlasını öğrenebilirsiniz:
eğer böyle bir /tmp/#sql_ab34_23f
şeyse, MySQL'in sorgu boyutu nedeniyle geçici bir tablo oluşturması gerektiği anlamına gelir. Onu / tmp içinde depolar ve / tmp dosyanızda bu geçici tablo için yeterli alan yoktur.
bunun yerine gerçek bir tablonun adını içeriyorsa, bu tablonun büyük olasılıkla bozuk olduğu ve onu onarmanız gerektiği anlamına gelir.
Sorununuzun / tmp boyutunda olduğunu belirlerseniz, bu yanıtı düzeltme için benzer bir soruya okuyun: MySQL, Hata 126: Tablo için yanlış anahtar dosyası .