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

1091: Невозможно выполнить DROP 'x'; проверьте, что столбец/ключ существует

MySQL

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

Столбец, индекс или внешний ключ, удаляемые через ALTER TABLE, не существуют. Несуществующий объект удалить невозможно.

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

Указание несуществующего имени объекта в DROP COLUMN/INDEX/FOREIGN KEY; опечатка в имени; объект уже удалён; путаница имени внешнего ключа с именем индекса; повторный запуск миграции.

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

Узнайте настоящее имя объекта: SHOW CREATE TABLE my_table; или SHOW INDEX FROM my_table; Удаляйте его по правильному имени. Для внешнего ключа используйте его символьное имя: ALTER TABLE my_table DROP FOREIGN KEY fk_name; В MySQL нет синтаксиса DROP COLUMN IF EXISTS (он есть только в MariaDB); в идемпотентных миграциях сначала проверяйте существование столбца через information_schema.columns: SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'my_table' AND column_name = 'my_column';

Открыть в DBAtlas →

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