FK(외래키) Constraint 에러

API를 만들면서 DB에 목 데이터를 넣는 과정에서 에러가 났다.

Foreign key constraint fails라는 구절을 보고 외래키 관련 에러라는 것을 알아차렸다.

그런데 분명 방금 참조되는 테이블의 요소들을 만들었던 것 같은데 왜 외래키 에러가 나지..?

라는 의문이 든 채로 계속 삽질을 했다.

…로그를 자세히 들여다보자..

허튼 시간만 낭비하다가 에러 로그를 아예 복사해봤다.

Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`project_db`.`message`, CONSTRAINT `message_ibfk_1` FOREIGN KEY (`id`) REFERENCES `project`.`box` (`box_id`) ON UPDATE CASCADE)

DB를 잘못 참조하고 있었다… ㅠㅠㅠㅠㅠ

project_db에 해당하는 테이블의 컬럼을 참조해야하는데, project를 참조하고 있어서 엥??? 없는디???? 요러고 있던 것임..

해결(?) SQL문

-- FK 참조하는 컬럼이 다른 DB의 테이블에 있는 요소였음...ㅠㅠ 
alter table PROJECT_DB.message drop foreign key message_ibfk_1;
alter table PROJECT_DB.message add foreign key (box_id) references PROJECT_DB.box (id) on update cascade on delete restrict;

update PROJECT_DB.message set box_id = 1 where message_id = 2

위와 같이 FK Constraint를 재설정해주고 FK도 새로 부여해줬다.

댓글남기기