[spring 이슈해결] Value too long for column "SELF_INTRODUCTION CHARACTER VARYING(255)
오늘은 Value too long for column "SELF_INTRODUCTION CHARACTER VARYING(255) 관련 에러에 대해 알아볼 것이다! 사실 방금 내가 만난 친구다
에러 발생 이유
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.dao.DataIntegrityViolationException: could not execute statement [Value too long for column "SELF_INTRODUCTION CHARACTER VARYING(255)":
이런 에러가 떴다. 딱 보자마자 아 뭔가 넘쳤구나라는 것을 알 수 있다.
JPA를 사용해서 프로젝트를 구현할 때 엔티티 부분에
private String selfIntroduction;
필드가 있었다. 기본적으로 string을 JPA에서 쿼리문으로 변환할 때 VARCHAR(255)로 변환한다.
즉 255자만 가능하다는 것이다.
하지만 자기소개같이 문장이 길어지면 이를 다 담지 못해서 오류가 난다.
해결방법
해결방법은 간단하다.
@Lob
private String selfIntroduction;
이런 식으로 @Lob 어노테이션을 써주면 된다.
이렇게 하면 쿼리문으로 변환될 때 대형 데이터인 BLOB나 CLOB로 바뀐다.
BLOB는 이미지, 오디오 등을 저장할 때 사용되는 LargeObject이고, CLOB는 긴 문자열을 저장할 때 사용되는 LargeObject이다.
둘 중 무엇을 사용할지는 스프링이 자동으로 추론한다고 한다.
https://shiba-holic.tistory.com/65
JPA @Lob 이해하기 (with MariaDB)
LOB 이란? - Large Object의 줄임말로서, 대형 객체 데이터를 저장하기 위한 가변 길이 데이터 유형이다. - BLOB, CLOB 2가지 종류가 있다. * BLOB(Binary Large Object) = 이미지, 오디오, 비디오 같은 이진 데이터
shiba-holic.tistory.com