MySQL Error, Cannot add or update a child row: a foreign key constraint fails
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도 새로 부여해줬다.
댓글남기기