arait-code’s RC

もうすぐエンジニア転職して2年になります。

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 テーブル名;