[DB] [MYSQL] [Error Code 1452] 외래키 문제 해결

업데이트:




❗ 에러메세지

Error Code: 1452. Cannot add or update a child row: 
a foreign key constraint fails (`user`.`#sql-19e0_13e`, 
CONSTRAINT `vam_book_ibfk_1` FOREIGN KEY (`authorId`) REFERENCES `vam_author` (`authorId`))




❗ 상황

📌 vam_book, vam_bcate, vam_author 라는 테이블이 있다.

📌 vam_book에는 기존에 넣어둔 튜플이 존재한다.

📌 이때 vam_authorvam_bcate에 각각 있는 authorIdcateCodevam_book 테이블의 외래키로 설정하려고 한다.

alter table vam_book add foreign key (authorId) references vam_author(authorId);
alter table vam_book add foreign key (cateCode) references vam_bcate(cateCode);

📌 authorIdcateCode를 외래키로 설정하자 에러가 발생했다.




❗ 원인

결론부터 보면 참조 무결성을 위배 했기때문에 발생한 에러이다.

참조 무결성이란 관계 데이터베이스 관계 모델에서 2개의 관련 있던 관계 변수 간의 일관성을 말한다.

예를들어 위의 그림을 보면 artist_id라는 컬럼을 두 테이블 모두 가지고 있는데 위의 테이블은 {1,2,3}의 값을 가지고 아래 테이블은 {3,4}의 값을 가지고 있는것을 볼 수 있다.

참조하려는 테이블의 artist_id가 서로 일치하지 않기 때문에 이는 참조 무결성을 위배한것이라고 볼 수 있다.




❗ 해결

기존에 vam_book에 들어있던 데이터를 지움으로써 authorId 컬럼과 cateCode 컬럼의 무결성 문제를 해결했다.

첫 번째 글입니다 가장 최근 글입니다

태그: ,

카테고리:

업데이트:

댓글남기기