DBAtlas · 데이터베이스 운영 아틀라스

1091: Can't DROP 'x'; check that column/key exists

MySQL

의미

ALTER TABLE로 삭제하려는 컬럼, 인덱스 또는 외래 키가 존재하지 않는다. 존재하지 않는 객체는 삭제할 수 없다.

원인

DROP COLUMN/INDEX/FOREIGN KEY에 존재하지 않는 객체 이름 지정. 이름 오타. 객체가 이미 삭제됨. 외래 키 이름과 인덱스 이름 혼동. 마이그레이션 두 번째 실행.

해결 방법

객체의 실제 이름을 확인한다: SHOW CREATE TABLE my_table; 또는 SHOW INDEX FROM my_table; 올바른 이름으로 삭제한다. 외래 키는 symbol 이름을 사용한다: 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에서 열기 →

같은 데이터베이스의 다른 항목