java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails

김성수·2023년 10월 27일
0

에러 해결

목록 보기
2/3

java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails 에러 발생

유저별로 자신의 글을 보여주기 위해 board 테이블에 user_id를 foreign key로 설정해줬다.
따라서, 게시글을 먼저 등록해줬을 때 생성된 키를 이용해서 user_id를 입력해줘야 한다고 판단한다.

<insert id="writeArticle" parameterType="articleDto">
		insert into board values(#{userId}, #{title}, #{contents}) 
	</insert>

위 코드가 이전 코드이다. 지금 userId를 바로 등록하려고하기 때문에 에러가 발생한다.

라고 생각했지만 그렇다기엔 아래와 같은 SQL문이 실행이 되어서 이상함을 느꼈다.

INSERT INTO `board` VALUES (0, 'user5', '안녕하세요', '안녕하세요');

해결

문제는 userId를 사용자 이름으로 넘겨줬기 때문이었다.
게시글을 등록할 때 외래 테이블인 user 테이블에서 userId를 검색하고 존재한다면 등록이 된다.
그런데 userName은 외래키로 등록되어있지도 않고 당연하게도 userId에 userName과 동일한 값이 존재하지 않았기 때문에 MySQL 측에서 게시글 저장 기능을 막은 것이었다.

profile
깊이 있는 소프트웨어 개발자가 되고 싶습니다.

0개의 댓글