문제 상황
Spring Boot + MyBatis + MySQL 환경에서
문의글(inquiry) 생성 시 FK 무결성 오류가 발생했다.
또, 로그인/인증 기능 없이 user_id를 자동 세팅하려다 문제가 생김.
주요 에러/현상
- FK 무결성 오류
- Cannot add or update a child row: a foreign key constraint fails ...
- Column 'user_id' cannot be null
- 로그인 기능 없이 user_id 자동 세팅 시도
- 서버가 로그인된 유저 정보를 알지 못해 user_id 값을 자동으로 넣지 못함
원인 분석
- FK 무결성 오류:
inquiry 테이블의 user_id 값과
user 테이블의 id 값이 일치하지 않았음 - 로그인/인증 미구현:
서버가 "현재 로그인한 유저" 정보를 모름
→ user_id를 클라이언트가 직접 입력해야만 INSERT 가능
→ 자동 세팅 시도 시 null 또는 잘못된 값으로 저장됨
해결 방법
- FK 무결성 오류 해결
- inquiry.user_id의 값이 user.id에 실제로 존재하는지 확인
- 확인 결과, inquiry.user_id의 값과 user.id의 값이 불일치했음
- 로그인 기능 미구현으로 인하여 user_id 값을
클라이언트가 직접 입력하여INSERT 실행
- inquiry.user_id의 값이 user.id에 실제로 존재하는지 확인
- 로그인 기능 없이 user_id 처리
- 클라이언트(포스트맨 등)에서 user_id를 직접 JSON 바디에 입력해서 요청
- 이후 로그인/인증 기능을 개발하면
user_id를 자동으로 세팅하는 구조로 리팩토링
교훈/체크리스트
- FK(외래키) 무결성:
- 참조하는 값(user_id)은 반드시 user 테이블에 실제로 존재해야 함
- 로그인/인증 없이 user_id 자동 세팅은 불가능:
- 인증 미구현 단계에서는 user_id를 반드시 직접 입력해야 함
- 인증 도입 후에는 서버가 로그인 정보로 user_id를 추출해서 사용
'Archive > 예전 TIL' 카테고리의 다른 글
| [트러블슈팅] Spring 단위 테스트 실패 (0) | 2025.07.10 |
|---|---|
| [트러블슈팅] 윈도우 한글 경로(ClassNotFoundException)로 인한 자바/테스트 에러 (2) | 2025.07.08 |
| [트러블슈팅] @Controller vs @RestController, 404 에러 & 정상 동작 차이 (0) | 2025.06.28 |
| [트러블슈팅] MyBatis Mapper가 Bean으로 등록되지 않는 런타임 에러 해결 (0) | 2025.06.28 |
| JPA: N+1 문제란? (0) | 2025.05.16 |