ERROR: Cannot add or update a child row: a foreign key constraint fails

Jiyoung·2021년 6월 14일
1

dummy data로 사용하려고 만든 seed 파일을 RDS로 마이그레이션 하려고 하니 아래와 같은 오류가 떴다.

ERROR: Cannot add or update a child row: a foreign key constraint fails (pan.Diaries, CONSTRAINT Diaries_ibfk_1 FOREIGN KEY (userId) REFERENCES Users (id) ON UPDATE CASCADE)

구글링해보니 이 오류가 뜨는 이유는 바로 '참조 무결성'을 위배했기 때문. 즉 A테이블의 a칼럼이 B테이블의 b칼럼을 참조하고 있다면, 이 두 칼럼의 값이 항상 일관되어야 한다는 것이다. 뭔가 말이 어려운데 내가 이해한 바로는, C테이블이 A테이블과 B테이블의 a, b칼럼을 참조하고 있는데(C테이블에서는 aId, bId로), A테이블과 B테이블의 a, b칼럼에 데이터가 전혀 삽입되어 있지 않는 상태에서 C테이블의 데이터를 추가하려고 하니 발생하는 오류였다.

해결 방법은 A테이블과 B테이블에 데이터를 먼저 추가해주고 C테이블의 데이터를 마이그레이션 하면 된다. 내 db에선 Users테이블과 Books테이블에 데이터를 먼저 추가한 후, Diaries seed 파일의userId와 bookId에 해당 값을 입력하고 마이그레이션 하니 해결되었다!

참고: https://live-everyday.tistory.com/188

profile
경계를 넘는 삶

0개의 댓글