Post

FK 등록 오류

다른 테이블에서 FK를 등록하려고 했더니 발생한 오류

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Operation failed: There was an error while applying the SQL script to the database.
Executing:
ALTER TABLE `bookstore`.`cartitems`
ADD INDEX `user_id_idx` (`user_id` ASC) VISIBLE;
;
ALTER TABLE `bookstore`.`cartitems`
ADD CONSTRAINT `book_id`
  FOREIGN KEY (`book_id`)
  REFERENCES `bookstore`.`books` (`id`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION,
ADD CONSTRAINT `user_id`
  FOREIGN KEY (`user_id`)
  REFERENCES `bookstore`.`users` (`id`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;

ERROR 1826: Duplicate foreign key constraint name 'book_id'
SQL Statement:
ALTER TABLE `bookstore`.`cartitems`
ADD CONSTRAINT `book_id`
  FOREIGN KEY (`book_id`)
  REFERENCES `bookstore`.`books` (`id`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION,
ADD CONSTRAINT `user_id`
  FOREIGN KEY (`user_id`)
  REFERENCES `bookstore`.`users` (`id`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION

원인

제약 조건의 이름이 문제

해결

참조키에 중복되지 않도록 규칙을 생성하고, 이름 변경하기

FK 제약조건 이름 짓기

fk_기준 테이블명_참조테이블명_참조키

하지만 다시 오류가 발생!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Operation failed: There was an error while applying the SQL script to the database.
Executing:
ALTER TABLE `bookstore`.`cartitems`
ADD INDEX `user_id_idx` (`user_id` ASC) VISIBLE;
;
ALTER TABLE `bookstore`.`cartitems`
ADD CONSTRAINT `fk_cartItems_books_boook_id`
  FOREIGN KEY (`book_id`)
  REFERENCES `bookstore`.`books` (`id`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION,
ADD CONSTRAINT `fk_cartItems_users_user_id`
  FOREIGN KEY (`user_id`)
  REFERENCES `bookstore`.`users` (`id`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;

ERROR 1061: Duplicate key name 'user_id_idx'
SQL Statement:
ALTER TABLE `bookstore`.`cartitems`
ADD INDEX `user_id_idx` (`user_id` ASC) VISIBLE

원인

FK 등록할 때마다 자동으로 idx 생성해주는 키 값의 이름이 중복

해결

자동으로 생성해주는 INDEX 이름을 변경

user_id_idxcartItems_user_id_idx로 변경

This post is licensed under CC BY 4.0 by the author.