색인 이름 'index_foo' on table 'bar' already exists가 나왔을 때 해결
소개
rails 앱을 만드는 동안 제목과 같은 오류로 인카운트했기 때문에 비망록으로
색인 이름 'index_foo' on table 'bar' already exists
같은 이름의 index가 있다는 오류입니다.
index는 뭐라고하는 사람은 이쪽을 부디 -> 데이터베이스에 인덱스를 붙이는 방법
우선 mysql에 로그인하여 상태 확인
참고 기사 rails generate migration 에러가 나왔을 때의 대처법
terminal$ mysql -u ユーザ名 -D database名 -p
-u ユーザ名指定するオプション
-D 接続先databaseを指定するオプション
-p パスワードを送信するオプション
데이터베이스 이름을 모르는 경우 config/database.yml
migration이 어디까지 진행되고 있는지 확인한다. rails의 log에도 써 있지만, 다시 확인.
mysqlmysql> select * from schema_migrations;

실행된 마이그레이션 파일이 나옵니다.
제 경우에는 20200613이 실행되고 있어야 합니다만 나오지 않았습니다.
테이블이 작성되었는지 확인
mysqlmysql> show columns from hoges; # hogeには作成したtable名を入れてください

테이블이 존재하는 것 같습니다. 그렇지 않으면 오류가 발생합니다.
다음은 index가 붙어 있는지 확인합니다.
mysqlmysql> show index from hoges;

색인이 붙여져 있습니다.
오류 내용은 同じ名前のindexがすでに存在しますよ였습니다.
그렇다면 마이그레이션 파일을 쓰지 못할 것입니다.
익숙하지 않지만, 생각하는 절로 이번은 모델 작성시에 references를 사용했습니다. 이거!
조사해 보면 外部キー作成時は自動でindexを貼ってくれる 같다. 이중으로 붙이고 있었습니다...
다음 그림은 좋은 예입니다.

고쳤습니다↓

외래 키를 만들 때 조심하십시오.
참고 기사
외래 키를 참조 유형 열에 저장
외래 키 개요 및 제약 조건을 사용하는 장점 단점
Reference
이 문제에 관하여(색인 이름 'index_foo' on table 'bar' already exists가 나왔을 때 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nossy/items/81f54a10ba5d07c184ef
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
같은 이름의 index가 있다는 오류입니다.
index는 뭐라고하는 사람은 이쪽을 부디 -> 데이터베이스에 인덱스를 붙이는 방법
우선 mysql에 로그인하여 상태 확인
참고 기사 rails generate migration 에러가 나왔을 때의 대처법
terminal
$ mysql -u ユーザ名 -D database名 -p
-u ユーザ名指定するオプション
-D 接続先databaseを指定するオプション
-p パスワードを送信するオプション
데이터베이스 이름을 모르는 경우
config/database.ymlmigration이 어디까지 진행되고 있는지 확인한다. rails의 log에도 써 있지만, 다시 확인.
mysql
mysql> select * from schema_migrations;

실행된 마이그레이션 파일이 나옵니다.
제 경우에는 20200613이 실행되고 있어야 합니다만 나오지 않았습니다.
테이블이 작성되었는지 확인
mysql
mysql> show columns from hoges; # hogeには作成したtable名を入れてください

테이블이 존재하는 것 같습니다. 그렇지 않으면 오류가 발생합니다.
다음은 index가 붙어 있는지 확인합니다.
mysql
mysql> show index from hoges;

색인이 붙여져 있습니다.
오류 내용은
同じ名前のindexがすでに存在しますよ였습니다.그렇다면 마이그레이션 파일을 쓰지 못할 것입니다.
익숙하지 않지만, 생각하는 절로 이번은 모델 작성시에
references를 사용했습니다. 이거!조사해 보면
外部キー作成時は自動でindexを貼ってくれる 같다. 이중으로 붙이고 있었습니다...다음 그림은 좋은 예입니다.

고쳤습니다↓

외래 키를 만들 때 조심하십시오.
참고 기사
외래 키를 참조 유형 열에 저장
외래 키 개요 및 제약 조건을 사용하는 장점 단점
Reference
이 문제에 관하여(색인 이름 'index_foo' on table 'bar' already exists가 나왔을 때 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nossy/items/81f54a10ba5d07c184ef
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(색인 이름 'index_foo' on table 'bar' already exists가 나왔을 때 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nossy/items/81f54a10ba5d07c184ef텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)