DBAtlas · Veritabanı operasyon atlası

1553: Cannot drop index needed in a foreign key constraint

MySQL

Ne demek?

Bir index'i düşürmeye çalışıyorsunuz ama bu index, bir foreign key constraint'i tarafından zorunlu olarak kullanılıyor. InnoDB, FK'nın dayandığı index'i kaldırmanıza izin vermez.

Neden olur?

InnoDB'de her foreign key, referans verdiği sütun(lar) üzerinde bir index gerektirir. DROP INDEX ile bu index'i silmeye çalışmak, FK constraint'ini dayanaksız bırakacağı için reddedilir. Genellikle bir tabloyu yeniden düzenlerken (index temizliği) ortaya çıkar.

Nasıl çözülür?

Önce ilgili foreign key constraint'ini kaldırın, sonra index'i düşürün: ALTER TABLE tablo DROP FOREIGN KEY fk_adi; ardından DROP INDEX indeks_adi ON tablo; Gerekiyorsa FK'yı başka uygun bir index'e dayanacak şekilde yeniden oluşturun. Mevcut FK'ları görmek için: SELECT constraint_name, table_name FROM information_schema.key_column_usage WHERE referenced_table_name IS NOT NULL;

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar