DBAtlas · Атлас эксплуатации баз данных

1553: Cannot drop index needed in a foreign key constraint

MySQL

Что это значит?

Вы пытаетесь удалить индекс, необходимый для ограничения внешнего ключа. InnoDB не позволяет удалить индекс, на который опирается FK.

Почему возникает?

В InnoDB каждый внешний ключ требует индекса на ссылающемся столбце (столбцах). Удаление этого индекса через DROP INDEX отклоняется, так как ограничение FK осталось бы без опоры. Обычно возникает при реорганизации таблицы (очистке индексов).

Как исправить

Сначала удалите ограничение внешнего ключа, затем удалите индекс: ALTER TABLE my_table DROP FOREIGN KEY fk_name; затем DROP INDEX idx_name ON my_table; При необходимости пересоздайте FK так, чтобы он опирался на другой подходящий индекс. Чтобы вывести существующие FK: SELECT constraint_name, table_name FROM information_schema.key_column_usage WHERE referenced_table_name IS NOT NULL;

Открыть в DBAtlas →

Ещё по этой СУБД