-
[JPA] Data truncation: Data too long for column트러블 슈팅 2022. 10. 29. 21:06
@Getter @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Qna extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private Account account; private String title; private String content; }
spring: jpa: hibernate: ddl-auto: create
위와 같이 Qna Entity를 생성하고 jpa.hibernate.ddl-auto: create로 설정해 MySQL에 Qna 테이블을 자동으로 생성하였다.
Qna를 등록하는 과정에서 content를 500자 정도로 설정하고 qnaRepository.save(qna)를 호출하였을 때, 다음과 같은 오류가 발생하였다.
com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column '' at row 1
원인
해당 오류는 자동으로 테이블을 생성하고 String 타입의 필드에 @Cloumn의 length 옵션을 지정하지 않으면 default 값인 255로 설정되기 때문에, MySQL 테이블에서 해당 필드는 varchar(255)로 설정된다.
이로 인해, content가 255자가 넘어 "Data too long for column" 오류가 발생한 것이다.
해결
@Getter @Entity @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Qna extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private Account account; private String title; @Column(length = 1000) private String content; }
@Cloumn의 length 옵션으로 varchar 길이를 설정하여 테이블 자동 생성 시 varchar({설정 값})으로 타입이 지정되게 할 수 있다.
'트러블 슈팅' 카테고리의 다른 글
[Spring] Spring Security + Junit5 (0) 2022.11.15 [JPA] UnexpectedRollbackException (0) 2022.11.04 [Jmeter] HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported (0) 2022.10.22 [JPA] 설정한 batch_size만큼 in 절이 나가지 않는 이유 (0) 2022.10.02 [Error] WebClient MacOS 에러 (0) 2022.09.30