Archive/예전 TIL

[트러블슈팅] FK 무결성 오류와 로그인 미구현 상태에서 user_id 입력 문제

khu2172 2025. 7. 2. 19:47

문제 상황

Spring Boot + MyBatis + MySQL 환경에서
문의글(inquiry) 생성 시 FK 무결성 오류가 발생했다.
또, 로그인/인증 기능 없이 user_id를 자동 세팅하려다 문제가 생김.


주요 에러/현상

  1. FK 무결성 오류
    • Cannot add or update a child row: a foreign key constraint fails ...
    • Column 'user_id' cannot be null
  2. 로그인 기능 없이 user_id 자동 세팅 시도
    • 서버가 로그인된 유저 정보를 알지 못해 user_id 값을 자동으로 넣지 못함

원인 분석

  • FK 무결성 오류:
    inquiry 테이블의 user_id 값과
    user 테이블의 id 값이 일치하지 않았음
  • 로그인/인증 미구현:
    서버가 "현재 로그인한 유저" 정보를 모름
    → user_id를 클라이언트가 직접 입력해야만 INSERT 가능
    → 자동 세팅 시도 시 null 또는 잘못된 값으로 저장됨

해결 방법

  1. FK 무결성 오류 해결
    • inquiry.user_id의 값이 user.id에 실제로 존재하는지 확인
      • 확인 결과, inquiry.user_id의 값과 user.id의 값이 불일치했음
    • 로그인 기능 미구현으로 인하여 user_id 값을
      클라이언트가 직접 입력하여INSERT 실행
     
  2. 로그인 기능 없이 user_id 처리
    • 클라이언트(포스트맨 등)에서 user_id를 직접 JSON 바디에 입력해서 요청
    • 이후 로그인/인증 기능을 개발하면
      user_id를 자동으로 세팅하는 구조로 리팩토링

교훈/체크리스트

  • FK(외래키) 무결성:
    • 참조하는 값(user_id)은 반드시 user 테이블에 실제로 존재해야 함
  • 로그인/인증 없이 user_id 자동 세팅은 불가능:
    • 인증 미구현 단계에서는 user_id를 반드시 직접 입력해야 함
    • 인증 도입 후에는 서버가 로그인 정보로 user_id를 추출해서 사용