목록 보기
JPA 덕분에 DB에서 삽질한 이야기
백엔드

JPA 덕분에 DB에서 삽질한 이야기

마켓컬리
마켓컬리
2020년 7월 5일

두줄요약

UUID를 `BINARY(255)`에 저장하면서 MySQL 우측 패딩으로 조회가 실패한 원인을 분석했습니다. UUID 컬럼을 `BINARY(16)`으로 변경하고 SQL로 패딩 영향을 검증했습니다.

문제 상황

  • UUID를 ID로 저장한 뒤 동일 UUID 기반 조회 실패
  • H2 인메모리 DB 테스트와 개발 DB 테스트 간 상이한 결과

원인 분석

  • UUID의 실제 크기인 16바이트와 BINARY(255) 컬럼 길이의 불일치
  • MySQL BINARY 고정 길이 저장 시 남는 영역의 우측 패딩
  • 패딩 없는 16바이트 UUID 조건과 255바이트 저장값 간 비교 실패

해결 방법

  • UUID ID 컬럼 정의를 BINARY(16)으로 변경
  • RPAD를 포함한 조회 조건으로 패딩 영향 직접 검증

주의할 점

  • H2와 MySQL처럼 DBMS별 binary 타입 처리 차이 확인
  • UUID binary 저장 시 컬럼 길이와 하이버네이트 기본 매핑 점검

다음 읽기

#JPA 주제를 이어서 읽기

JPA 덕분에 DB에서 삽질한 이야기

UUID를 BINARY(255)에 저장해 조회가 실패한 원인을 MySQL 우측 패딩에서 찾았습니다. UUID 크기에 맞춰 BINARY(16)으로 변경하고 H2·MySQL 차이도 확인했습니다.

마켓컬리
마켓컬리
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...