일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 영상편집
- ibatis
- SID
- 안드로이드 스튜디오
- oracle
- q87
- API
- 키보드
- 톰캣
- JDBC
- httpservletreqeust
- HTML
- MariaDB
- 티스토리챌린지
- Tomcat
- 스레드 덤프
- http
- 컨트롤러
- service name
- wsdl
- java
- MySQL
- 프로세스
- Docker
- 스레드
- letterspacing
- cmd
- servicename
- 오블완
- Database
- Today
- Total
블로그 이름
[ERROR] MysqlDataTruncation: Data truncation: Incorrect string value 본문
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 되는 것을 확인 할 수 있다.
'개발 > 오류' 카테고리의 다른 글
[ERROR] Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0..' for column (1) | 2025.04.16 |
---|---|
[ERROR] MysqlDataTruncation: Data truncation: Data too long for column (0) | 2025.04.11 |
[ERROR] com.ibatis.common.beans.ProbeException (0) | 2025.02.24 |
[ERROR] Tomcat 연결 안되는 현상 해결 방법 정리 (0) | 2025.02.21 |
[ERROR] InvocationTargetException 예외 (0) | 2025.02.18 |