Mysql2::Error: Can't DROP ''; check that column/key existsが出た時
[状況]
circle ciでridgepoleを使用してのデプロイでindexの張り替えをしたところ
[ERROR] Mysql2::Error: Duplicate entry が発生してindex作成途中にビルドが失敗し
rerunしたところタイトルのエラーが発生しました
## [原因]
index作り直しの途中で失敗してしまったため
indexの整合性が保てず、本来存在してremoveするはずのindexが既にがなくなっていたためエラーになっていました
1: remove_index("baw", name: "index_baw_01") 2: remove_index("baw", name: "index_baw_02") 3: remove_index("baw", name: "index_baw_03") * 4: add_index("baw", ["organization_id", "member_type", "member_id", "target_type", "target_id", "wholesaler_id"], **{:unique=>true, :name=>"unique_baw1"})
removeした後のところでエラーが発生していた
[対応]
データベースで 削除されてしまった本来存在するはずのindexを手動で作成してrerunしたら無事ビルドに成功しました。
各種コマンド
インデックス確認
SHOW INDEX FROM テーブル名;
インデックス作成
CREATE INDEX インデックス名 ON テーブル名(カラム名1, カラム名2, ...);
インデックス削除
DROP INDEX インデックス名 ON テーブル名;