1091: Can't DROP 'x'; check that column/key exists
MySQLO que significa?
A coluna, o índice ou a foreign key que está sendo removida com ALTER TABLE não existe. Não é possível remover um objeto inexistente.
Por que acontece?
Informar um nome de objeto inexistente em DROP COLUMN/INDEX/FOREIGN KEY; um nome grafado incorretamente; o objeto já removido; confusão entre o nome da foreign key e o nome do índice; uma migration executada uma segunda vez.
Como resolver
Verifique o nome real do objeto: SHOW CREATE TABLE my_table; ou SHOW INDEX FROM my_table; Remova-o usando o nome correto. Para uma foreign key, use o nome do seu símbolo: ALTER TABLE my_table DROP FOREIGN KEY fk_name; O MySQL não tem a sintaxe DROP COLUMN IF EXISTS (apenas o MariaDB tem); em migrations idempotentes, verifique primeiro se a coluna existe via information_schema.columns: SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'my_table' AND column_name = 'my_column';
Mais entradas deste banco
- 1071Specified key was too long; max key length is 767 bytes
- 1050Table already exists
- 1051Unknown table 'x'
- 1093You can't specify target table 'x' for update in FROM clause
- 1305PROCEDURE does not exist
- 1227Access denied; you need (at least one of) the PRIVILEGE
- 3730Cannot drop table referenced by a foreign key constraint