1553: Cannot drop index needed in a foreign key constraint
MySQLNe 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;
Aynı motorda diğer kayıtlar
- 1129Host 'host' is blocked because of many connection errors
- 1194Table 'name' is marked as crashed and should be repaired
- 1615Prepared statement needs to be re-prepared
- 3948Loading local data is disabled; this must be enabled on both the client and server sides
- 1075Incorrect table definition; there can be only one auto column and it must be defined as a key
- 1055Expression not in GROUP BY (only_full_group_by)
- 1267Illegal mix of collations