MySQL yanlış anahtar dosyası birden fazla yaparken tmp tablo için katılır
Burada yardım için sık gelmiyorum ama bu sinirli olduğumu ve güzel birini daha önce karşılaştı umuyorum.
Bir tablo birden fazla kullanarak üyelik kayıt almaya çalıştığım zaman bu hatayı alıyorum:
#126 - Incorrect key file for table '/tmp/#sql_64d_0.MYI'; try to repair it
Bu sorgu hata oluşturur:
SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
INNER JOIN `core_site` ON (`core_username`.`site_id` = `core_site`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1
Ama ben demem:
SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1
Ve ne olur bu
SELECT * FROM `core_username`
INNER JOIN `core_site` ON (`core_username`.`site_id` = `core_site`.`id`)
ORDER BY `core_username`.`name` ASC LIMIT 1
Buna ne sebep oluyor olabilir? Gerçekten tmp tablo onarma hakkında gitmek nasıl bilmiyorum, ama gerçekten yeni bir tmp tablo her zaman olduğu gibi sorun olduğunu sanmıyorum. Kullanıcı adı tablo oldukça büyük (kayıtları 233,718) ama bunun onunla bir ilgisi şüpheliyim.
Herhangi bir yardım çok mutluluk duyacağız.
GÜNCELLEMEBazı testlerden sonra bu hata sadece sonuçları sipariş vermek istediğimde olmuyor gibi görünüyor. O, bu sorgu bekliyorum bana ne verecek
SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
INNER JOIN `core_site` ON (`core_username`.`site_id` = `core_site`.`id`)
LIMIT 1
Ama eğer eklersem:
ORDER BY `core_username`.`name` ASC
Hata tetiklenir. Bu sadece şu anda kullanıyorum belirli Web sunucusu üzerinde oluyor. Ben veritabanı indirmek ve benim localhost yanı sıra diğer sunucularda aynı şeyi deneyin eğer iyi çalışır. MySQL 5.0.77 sürümü.
Ne oluyor tmp tablo oluşturulması çok büyük ve MySQL olduğunu oldukça eminim bunu bilerek bobinleri as described in this blog post. Hala çözüm istiyor, ama değilim
CEVAP
Bu hata geçici tablolar ile olur bazen
#126 - Incorrect key file for table '/tmp/#sql_64d_0.MYI'; try to repair it
/tmp
klasör alanı dışında çalıştığı için olabilir. Bazı Linux yüklemeleri, /tmp
kendi bölümü var ve fazla yer yok - büyük MySQL sorguları doldurur.
df -h
\tmp
kendi bölümü içinde olup olmadığını, ve ne kadar ayrılmış olduğunu kontrol etmek için kullanabilirsiniz.
Eğer alan kendi bölüm ve kısa ise, aşağıdakileri yapabilirsiniz:
(a) /tmp onun parition daha fazla boşluk (ya da yeniden tahsis etme veya ana bölüm - örneğin see here) taşıyarak, böylece değiştirin
(b) değişen MySql farklı bir bölüm, /var/tmp
örn: different temp folder kullandığı config
MySQL: #126 - tablo için Yanlış anahta...
Böyle büyük mükafat uyarı: "Birde...
Nasıl birden fazla çalıştırmak için .B...
MySQL kullanarak GÜNCELLEME birden faz...
Ben başvuru belirli bir tablo yabancı ...