본문 바로가기

에러

[MySQL Error 1005 - errno: 121] 외래키 설정이 안되네?

에러 배경

MySQL Workbench에서 새로운 테이블을 생성하던 과정에서 기본키, 외래키를 설정하고 생성하려고 apply를 누르니 에러가 발생했다.

에러 그 잡채

Error 1005: "Can't create table `BookShop`.`baskets`
(errno: 121 "Duplicate key on write or update")
SQL Statement:  ALTER TABLE `BookShop`.`baskets`  ADD CONSTRAINT `FK_book_id`
FOREIGN KEY (`book_id`)   REFERENCES `BookShop`.`books` (`id`) ON DELETE NO ACTION
ON UPDATE NO ACTION, ADD CONSTRAINT `FK_user_id` FOREIGN KEY (`user_id`)
REFERENCES `BookShop`.`users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION"

에러를 읽어보면 key가 중복되었다고 나와있다.

해결 과정

해결. 외래키의 이름 변경하기

처음 외래키를 설정할 때 외래키의 이름을 정할 수 있는데 이때 다른 테이블에서 사용한 외래키의 이름과 중복되면 발생하는 에러다. 그렇기 때문에 외래키의 이름을 변경해 주면 된다.

🍯tip! 외래키의 중복을 막기 위해서 'FK_현재테이블명_참조테이블명_참조 PK명'으로 한다면 앞으로 중복이 발생하는 일은 없다.

정리

외래키의 이름이 중복되면 안 되는 사실을 깨닫고 앞으로 까먹어서 또 고생하는 일이 없으면 좋겠다.

🍯tip! 혹시 한 번이라도 MySQL Workbench에서 apply를 눌러서 테이블에 이미 적용이 되었다면 다음 글도 참고하면 좋을 것 같다.
 

[MySQL Error 1061] 아니 외래키 이름도 바꿨는데 또 에러야?

에러 배경MySQL Workbench에서 외래키 에러를 해결하자마자 이어서 발생된 에러이다.에러 그 잡채Error 1061: Duplicate key name 'FK_book_id_idx'SQL Statement: ALTER TABLE `BookShop`.`baskets`ADD INDEX `FK_book_id_idx` (`book_id`

nulzi-dev.tistory.com