DBAtlas · データベース運用アトラス

1091: Can't DROP 'x'; check that column/key exists(DROP できない。列/キーの存在を確認)

MySQL

意味

ALTER TABLE で削除しようとした列、インデックス、または外部キーが存在しない。存在しないオブジェクトは削除できない。

原因

DROP COLUMN/INDEX/FOREIGN KEY で存在しないオブジェクト名を指定した、名前のつづりの誤り、オブジェクトがすでに削除済み、外部キー名とインデックス名の混同、マイグレーションの 2 回目の実行。

対処方法

オブジェクトの実際の名前を確認する: 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 で開く →

同じデータベースの他の項目