Back-end/Spring

[Spring] JPA "Row size too large" 문제 분석하기

류건 2024. 5. 26. 18:15
반응형

 

 

간혹 가다가 Entity String Type의 속성 길이를 디폴트보다 길게 하고 싶을 때 다음과 같이 하는 경우가 있을 것이다.

 

 

Document entity의 content의 길이가 늘어나는 것을 대비해, @Column 어노테이션의 length = 50000으로 하여 길이를 늘리고 실행을 해보면 다음과 같은 에러가 발생한다

engine=InnoDB" via JDBC [Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs]

 

즉, 위 에러는 MySQL에서 varchar 타입의 길이를 너무 크게 설정하면 "Row size too large" 오류를 발생시킨다.

이 오류는 MySQL의 InnoDB 테이블에서 행 크기가 65535바이트를 초과할 때 발생하는데, varchar(10000)은 너무 큰 크기이므로 다음과 같이 해결할 수 있다.

 

해결

 

해당 컬럼의 타입을 TEXT 타입으로 지정해주었다.

TEXT 타입은 varchar와 달리 더 큰 데이터를 저장할 수 있고, InnoDB의 행 크기 제한에 영향을 덜 미친다.

 

JPA 엔티티에서 TEXT Type으로 변경해주면, @Column 어노테이션을 통해 length를 지정하면 안된다!

 


참고

  https://velog.io/@rhqjatn2398/Access-Control-Expose-Headers-CORS-safelisted-response-header

 

Access-Control-Expose-Headers & CORS-safelisted response header

Spring Boot 서버에서 응답 헤더에 추가적인(사용자 정의) 헤더 값을 설정하였다. 그런데 아래 이미지처럼 브라우저의 개발자 도구에서는 추가한 헤더를 확인할 수 있는데, 프론트(Vue.js)에서는 추

velog.io

 

반응형