2011-10-04 10 views
5

InnoDB'yi kullanarak ve kullanılmayan bir yabancı anahtarı bırakarak MySQL ile ilgili sorunlar. Yabancı anahtar başka bir tablonun kimliğine başvurur. Ancak, bu alana ihtiyacım yok.MySQL açılan alan; yabancı anahtar errorno 150

Çalışmayan fk dizinini kaldırmayı denedim - bu, bir yabancı anahtar kontrasta ihtiyaç olduğunu söylüyor. Ve bana bir hata verir alanını kaldırarak:

1025 - './axis/Schedule' için' ./axis/#sql-ad8_1531' olarak değiştirilirken Hata (errno: 150)

tablo şu anda boş. Bu alana referans veren tablo yok. Bundan nasıl kurtulacağın hakkında bir fikrin var mı? Yeni bir tablo oluşturmanın dışında?

Aşağıdaki hatayı doğru bir şekilde okuyorsam, fk dizini bildirildiği için sütunu bırakamıyorum. Ve endeksi bırakamam çünkü sütun var. Tavuk & Yumurta ??

SON yabancı anahtar HATA 111.004 tablo eksen/Schedule dış anahtar kısıtlaması olarak 17:05:40 hatası: ilk sütun olarak sütunları veya veri türleri içinde içerecektir tablosunda hiç bir göstergesi olduğu tablosu, başvurulan tablo 'daki veya ON ... SET NULL sütunları ile NULL değil bildirilmiştir. Kısıtlama: , CONSTRAINT "fk_Schedule_Grp" YABANCI ANAHTAR ("idGrp") REFERANSLAR "Grp" ("idGrp") ÜZERİNDEN GÜNCELLEME SENİN EYLEM YOK EYLEM InnoDB: Tablo yeniden adlandırılıyor axis. axis. Schedule başarısız!

cevap

14

Sen

İşte constraint_name
ALTER TABLE table_name DROP FOREIGN KEY constraint_name 

kısıtlaması ismi yerine endeksidir kullanmak gerekir. Bunun ne olduğunu bilmiyorsanız, bir SHOW CREATE TABLE yayınlayarak öğrenebilirsiniz. CONSTRAINT kelimesinden sonra görünen tanımlayıcıdır.

Düzenleme: Eğer

ALTER TABLE table_name DROP FOREIGN KEY fk_Schedule_Grp 
+0

Harikasınız, ben sınırlamasıyla endeksi kafa karıştırıcı inanıyoruz sorunu gerekir gibi soruya verdiğiniz ek itibaren görünüyor. Bu, her üçünden kurtulmak için bir çekicilik gibi çalıştı. Teşekkürler! –