블로그 이름

[ERROR] MysqlDataTruncation: Data truncation: Incorrect string value 본문

개발/오류

[ERROR] MysqlDataTruncation: Data truncation: Incorrect string value

Hide 2025. 4. 10. 23:57

INSERT 중 아래 예외가 발생.

 

 Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x94\xAE d...' for column `DB`.`TABLE`.`COLUMN` at row 1

 

위 에러 로그는 DB의 TABLE의 COLUMN에 이모지를 저장하려다 발생하였다.

 

UTF-8 4바이트 문자를 저장하려고 할 때 발생하는 Data trancation: Incorrect string value 오류로 MySQL의 기본 문자셋이 3바이트까지만 지원하는 UTF8인 경우 4바이트 문자를 저장할 수 없기 때문에 생기는 문제다.

 

이모지는 UTF-8 인코딩에서 4바이트 문자이고, MySQL의 utf8은 최대 3바이트까지 지원하기 때문에 utf8mb4로 변경해줘야한다.

 

현재 테이블의 문자셋 확인 방법

SHOW FULL COLUMNS FROM TABLE;

 

D컬럼 문자셋을 utf8mb4로 변경한다.

ALTER TABLE TABLE MODIFY COLUMN COLUMNNAME VARCHAR(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

테이블 전체 변경 방법

ALTER TABLE TABLENAME OCNVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

데이터베이스 전체 변경 방법

ALTER DATABASE DB CHARACTER SET = utfmb4 COLLATE = utf8mb4_unicode_ci;

 

설정 후 이모지 포함 문자열 INSERT 되는 것을 확인 할 수 있다.