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;
Ещё по этой СУБД
- 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