JPA, UUID, MySQL: DB 조회 오류, 삽질 끝 해결!
by DD
5년 전
조회수 4
JPA를 사용하여 UUID를 저장했지만, 조회에 실패하는 문제 발생
H2와 MySQL 환경의 차이점을 파악하고, 컬럼 길이 문제임을 확인
BINARY(16)으로 컬럼 속성을 변경하여 문제를 해결하고, 패딩 문제 분석
JPA, UUID, 그리고 BINARY 타입
JPA를 사용하여 UUID를 저장할 때, MySQL의 BINARY 타입과 관련된 문제를 겪었다. 구체적으로, H2 인메모리 DB에서는 문제없이 동작했지만, 실제 MySQL 환경에서는 조회가 되지 않았다. 따라서, 컬럼 길이 설정을 통해 문제를 해결했다.
H2 vs MySQL: 테스트 환경의 함정
테스트 환경의 차이로 인해 문제의 원인을 파악하는 데 어려움을 겪었다. H2는 BINARY 타입에 대한 패딩 처리를 다르게 처리한다. 반면, MySQL은 RPAD를 사용하여 패딩을 수행한다. 따라서, 테스트 환경의 차이를 인지하는 것이 데이터 무결성 확보에 중요하다.
MySQL BINARY 패딩과 UUID 조회
MySQL에서 BINARY 타입은 저장 시 우측 패딩을 수행한다. 따라서, UUID를 정확하게 조회하려면 패딩된 값을 함께 검색해야 한다. 구체적으로, RPAD 함수를 사용하여 패딩 값을 맞춰야 한다. 결과적으로, 데이터베이스 스키마 설계 시 데이터 타입과 패딩에 대한 이해가 필요하다.