SQLIntegrityConstraintViolationException 에러

이효곤·2023년 4월 11일

트러블슈팅

목록 보기
5/7

SQLIntegrityConstraintViolationException 에러 발생

java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (summer.favorite, CONSTRAINT FKh20v4bwlpu57uv12dl7i2qipe FOREIGN KEY (post_id) REFERENCES post (post_id))

Post객체를 삭제할 때 다음과 같은 에러가 발생했습니다.

이 에러는 부모 엔티티를 삭제하려고 하지만 자식 엔티티가 존재하여 데이터베이스의 외래 키 제약 조건을 위반하여 발생하는 예외입니다.

즉, Post를 삭제하려고 하지만 Favorite,Comment 엔티티에서 해당 Post를 참조하고 있기 때문에 삭제할 수 없는 것입니다. 이 경우에는 해당 Post를 참조하고 있는 Favorite,Comment 엔티티를 먼저 삭제하거나, Post와 연관된 자식 엔티티들을 모두 삭제한 후에 해당 Post를 삭제해야 합니다.

이를 해결하기 위해서는 CascadeType 옵션을 이용하여 부모 엔티티가 삭제될 때 자식 엔티티도 함께 삭제되도록 설정할 수 있습니다. 또는 외래 키를 참조하는 자식 엔티티를 삭제할 때 부모 엔티티도 함께 삭제되도록 ON DELETE CASCADE 옵션을 사용할 수도 있습니다.

연관관계만 삭제

Favorite,Comment를 삭제하는 경우 이 두 객체도 연관관계 관련 수정을 해줘야 하므로, Status를 Deleted로 변경하는 방식으로 구현을 진행 했습니다.

profile
develop

0개의 댓글