SQLSyntaxErrorException - Data too long for column '*' at row 1

minjjai·2022년 11월 12일

개요

프로젝트 진행 중, Post(글) CRUD 관련 개발을 하다가 아래와 같은 오류가 발생했다.

파라미터 값으로 넘어온 content의 값이 너무 길다는 것이다.
그래서 내가 무엇을 빠뜨렸을까 생각을 해보았다.

문제 & 실수

아래는 Post 엔티티이다.

@Entity
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Post {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @CreatedDate
    private LocalDateTime createDate;
    private LocalDateTime updateDate;

    private String subject;

    private String content;

    private String contentHtml;

    @ManyToOne
    private Member member;
    @OneToMany(mappedBy = "post", cascade = CascadeType.REMOVE)
    private List<HashTag> hashTagList;

subject는 글의 제목이라 일반 String타입으로도 충분할 수 있지만, 내용인 content는 일반적인 String타입의 범위를 벗어날 수도 있다.

해결

content와 같이 긴 문자열을 저장할 경우에는

@Column(columnDefinition = "TEXT")

이와 같은 어노테이션을 추가해주면 된다.
해당 컬럼 값의 범위를 TEXT, 즉 제한 없는 문자열로 만들 수 있다.

원래 알고 있었지만, 빠른 개발을 진행하다보니 빼먹은 것 같다.
다음부터는 당황하지 않도록 꼭 엔티티를 신경써서 구성해보자.

profile
BackEnd Developer

0개의 댓글