728x90
본글은 @Lob 어노테이션에 대해서 공부한 지식을 정리한 글입니다.
개요
Gemini AI를 요청을 할 때 요청문(request)를 보냈을 때 위와 같이 "ERROR value too long for type character varying(255)"에러가 발생했습니다.
문제 상황
- MSA 환경에서 FeignClient를 통해 리스트를 문자열로 변환하고, AI 애플리케이션에 최적 경로를 요청하는 로직에서 "value too long for type character varying(255)" 오류가 발생했습니다.
- 해당 로직은 출발 허브 ID와 도착 허브 ID를 받아 경로 리스트를 생성하고, 이를 AI에 전송하여 최적의 경로를 요청하는 구조입니다.
문제의 원인
- 문제의 원인은 question 필드에 대한 길이 제한입니다.
- 별도의 설정이 없으면, 문자열 필드는 기본적으로 VARCHAR(255)로 처리됩니다.
- 경로 리스트와 함께 생성된 question 문자열의 길이가 255자를 넘으면서 데이터베이스에서 제한을 초과해 오류가 발생한 것입니다.
해결 방안
이 문제를 해결하기위한 방법은 다양합니다.
- @Column 어노테이션을 사용하여 길이 제한 추가
- TEXT 타입 사용
- @Size 어노테이션으로 유효성 검사 추가
- @Lob 어노테이션 사용
위와 같이 다양한 방법이 존재하지만 가장 간단한 방법인 @Lob어노테이션을 사용했습니다.
@Lob 어노테이션을 사용한 이유
- 간단한 설정
- 별도로 길이를 지정하지 않고, 어노테이션만으로 TEXT 타입으로 매핑됩니다.
- 데이터베이스 호환성
- PostgreSQL에서 TEXT 타입은 길이에 제한이 없으므로 대용량 데이터를 문제없이 처리할 수 있습니다.
- 유지 보수성
- 문자열 길이 문제를 쉽게 해결할 수 있어, 대규모 데이터를 다룰 때 유연성을 제공합니다.
question 필드의 문자열 길이 초과로 발생한 오류는 @Lob 어노테이션을 사용하여 TEXT 타입으로 매핑함으로써 해결되었습니다. 이제 길이가 긴 경로 리스트도 문제없이 AI 애플리케이션에 전송할 수 있었습니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.09.20 - N+1 문제에서 Fetch Join을 선택하는 이유 (0) | 2024.09.20 |
---|---|
[TIL, 일일 회고] 2024.09.19 - DDL 자동 생성하기 (0) | 2024.09.19 |
[TIL, 일일 회고] 2024.09.17 - Zipkin 분산 트레이싱 실패 원인 분석 (0) | 2024.09.17 |
[TIL, 일일 회고] 2024.09.16 - Kafka Unrecognized token 에러원인과 해결방법 (0) | 2024.09.16 |
[TIL, 일일 회고] 2024.09.15 - Docker Compose에서 Prometheus 설정 파일 경로 오류 해결 방법 (0) | 2024.09.15 |