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';
Ещё по этой СУБД
- 1071Указанный ключ слишком длинный; максимальная длина ключа — 767 байт
- 1050Таблица уже существует
- 1051Неизвестная таблица 'x'
- 1093Нельзя указывать целевую таблицу 'x' для обновления в предложении FROM
- 1305PROCEDURE не существует
- 1227Доступ запрещён; требуется (хотя бы одна из) привилегия PRIVILEGE
- 3730Невозможно удалить таблицу, на которую ссылается ограничение внешнего ключа