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&amp;characterEncoding=UTF-8

<br/>

0
이전 댓글 보기
등록
TOP