MySql, UTF8MB4 설정 (이모티콘 관련)
Jun 29, 2018 조회수 1534
CHANGOO'S에 글에 이모티콘을 삽입하려하는데..
다음 에러가 발생한다.
<br/>
### Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x92\xA4</...' for column 'STUDY_CONTENTS' at row 1
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: INSERT TB_PTFOLIO_STUDY (STUDY_CATEGORY, STUDY_CODE_LANG, STUDY_TITLE, STUDY_CONTENTS, STUDY_DATE, STUDY_HITS) VALUES (?, ?, ?, ?, ?, ?)
### Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x92\xA4</...' for column 'STUDY_CONTENTS' at row 1
; SQL []; Data truncation: Incorrect string value: '\xF0\x9F\x92\xA4</...' for column 'STUDY_CONTENTS' at row 1; nested exception is com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x92\xA4</...' for column 'STUDY_CONTENTS' at row 1] with root cause
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x92\xA4</...' for column 'STUDY_CONTENTS' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3876)
<br/>
흠.. 구글링을 해보니
UTF8이 아닌 UTF8MB4로 인코딩하여야 한단다..
<br/>
다음쿼리를 이용하여 스키마, 테이블을 UTF8MB4로 인코딩을 바꾸었다.
ALTER DATABASE 'schema' CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;
ALTER TABLE `tableName`
COLLATE='utf8mb4_general_ci',
CONVERT TO CHARSET utf8mb4;
<br/>
해당 내용을 바꾸엇더니 DB에서 데이터를 삽입하면 이모티콘이 삽입되지만
Java단에서 데이터 삽입시 동일한 에러가 발생한다..
<br/>
구글링 결과 Mysql 설정 파일에 다음을 추가하였다. 설정 후 MySql을 리부팅하였다.
- NAS MySql설정파일위치 : /volume1/@appstore/MariaDB10/usr/local/mariadb10/etc/mysql/my.cnf
[mysqld]
collation-server = utf8mb4_unicode_ci
character-set-server = utf8mb4
skip-character-set-client-handshake
<br/>
또한 JDBC.url에 다음 파마리터를 추가한다.
useUnicode=true&characterEncoding=UTF-8
<br/>
'MySql, UTF8MB4 설정 (이모티콘 관련)' 관련된 다른글
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.