1
0

Index name 'Index name' on table 'Table name' already existsって言われたとき

Posted at

はじめに

以下のマイグレーションエラーがよく起きてたけど、
対処法は毎度同じだったので手順を残す

Index name {Index name} on table {Table name} already exists

rails db:migrateまたはrails db:migrate:up VERSION={バージョン}したときに、
上記のエラーメッセージで怒られる

やったこと

テーブルまたはインデックスが本当にあるのか確認

$ docker compose exec db bash
$ mysql -u root -p
# パスワード入力

# 本当にテーブルがあるのか → あった
show columns from {Table name};

# そのテーブルに当該Indexはあるのか → あった
show index from {Table name};

作成しようとしている所に作成しているあるから怒られると思う
ならば消してみる

# インデックスがあれば消す
alter table {Table name} drop index {Index name};

# テーブルも消す
drop table {Table name};

指定のバージョンだけdownしていたら、バージョン指定してupしてもよし
一応マイグレーションはできた

# 特定のマイグレーションファイルのみmigrate
rails db:migrate:up VERSION={バージョン}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0