1091: Can't DROP 'x'; check that column/key exists (no se puede hacer DROP; compruebe que existe la columna/clave)
MySQL¿Qué significa?
La columna, el índice o la clave foránea que se quiere eliminar con ALTER TABLE no existe. No se puede eliminar un objeto inexistente.
¿Por qué ocurre?
Indicar un nombre de objeto inexistente en DROP COLUMN/INDEX/FOREIGN KEY; un nombre mal escrito; el objeto ya eliminado; confundir el nombre de la clave foránea con el del índice; una migración ejecutada por segunda vez.
Cómo solucionarlo
Verifique el nombre real del objeto: SHOW CREATE TABLE my_table; o SHOW INDEX FROM my_table; Elimínelo usando el nombre correcto. Para una clave foránea use su nombre de símbolo: ALTER TABLE my_table DROP FOREIGN KEY fk_name; MySQL no tiene la sintaxis DROP COLUMN IF EXISTS (solo MariaDB); en migraciones idempotentes, compruebe primero que la columna existe mediante information_schema.columns: SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'my_table' AND column_name = 'my_column';
Más entradas de este motor
- 1071Specified key was too long; max key length is 767 bytes (clave demasiado larga; máximo 767 bytes)
- 1050Table already exists (la tabla ya existe)
- 1051Unknown table 'x' (tabla desconocida)
- 1093You can't specify target table 'x' for update in FROM clause (no se puede usar la tabla de destino del update en FROM)
- 1305PROCEDURE does not exist (el procedimiento no existe)
- 1227Access denied; you need (at least one of) the PRIVILEGE (acceso denegado; se necesita el privilegio)
- 3730Cannot drop table referenced by a foreign key constraint (no se puede eliminar una tabla referenciada por una clave foránea)