MYSQL)Data too long for column 에러 해결

작성: 2021.04.22

수정: 2021.04.22

읽는시간: 00 분

Data/MYSQL ⁄ MariaDB

반응형

Intro

[http-nio-80-exec-6] ERROR j.sqlonly - 1. PreparedStatement.execute() UPDATE LIC_ALBA SET LIC_IMG = '<Binary InputStream of length 311957>' WHERE AL_ID = 'A0000016'
AND LIC_CODE = 'L006'

com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'lic_img' at row 1

MYSQL에서 데이터를 넣으려 할때 위의 에러가 뜬다면 해당 컬럼에 들어갈 수 있는 최대 값보다 넣으려고 하는 데이터가 더 큰 상황입니다.

숫자나 CHAR, VARCHAR2 등을 넣으려고 했다면 테이블의 해당 컬럼의 Length가 몇으로 되어있는지 확인해서 필요하다면 최대값을 변경 하시면 됩니다.

저는 이미지 파일을 이진 데이터 형식으로 DB에 넣다가 위의 에러가 나왔는데요, 오라클에서는 그냥 BLOB에 이정도 데이터는 문제 없이 들어갔었는데 MYSQL에서 문제가 발생해서 의아했습니다. 처음에는 1kb 도 안되는 작은 이미지를 넣었었는데 문제없이 잘 업로드가 되어서 코드에는 문제가 없다고 생각했었거든요.

1

바로 Sequel Pro 에서 확인을 해보니 최대값이 65,535 bytes로 되어 있습니다.

img

겨우 65kb 까지의 데이터밖에 들어갈 수 없는 상태였습니다.

해결

img

한단계 위의 MediumBLOB로 변경해주었습니다. 16MB 까지 담을 수 있습니다.

그 다음 단계인 LONGBLOB 의 경우에는 무려 4GB짜리 데이터 까지 저장이 가능합니다.

img

이제 문제없이 업데이트가 되는 것을 확인 할 수 있습니다.

반응형