com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\xA5\xAC&g...' for column `{DB 명}`.`{Table 명}`.`{Column}` at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3876) ~[mysql-connector-java-5.1.38.jar:5.1.38]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814) ~[mysql-connector-java-5.1.38.jar:5.1.38]
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478) ~[mysql-connector-java-5.1.38.jar:5.1.38]
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625) ~[mysql-connector-java-5.1.38.jar:5.1.38]
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2551) ~[mysql-connector-java-5.1.38.jar:5.1.38]
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861) ~[mysql-connector-java-5.1.38.jar:5.1.38]
패치 후 갑자기?! 포틀릿 데이터 저장시 DB에서 오류 발생
확인결과 '옵션' 값들이 encodeURIComponent() 통해서 들어가는데, string으로 변환되어 DB 컬럼에 저장시 오류 발생
해당 컬럼의 character set 변경하여 해결.
아래 쿼리로도 변경가능
alter table {테이블 이름} change column {컬럼 이름} {컬럼 이름} {컬럼 속성} collate
'utf8mb4_unicode_ci'
(ex. ALTER TABLE test_column CHANGE COLUMN a_column a_column LONGTEXT NULL DEFAULT NULL
COLLATE 'utf8mb4_unicode_ci' )
참고:
MariaDB, MySQL 이모티콘(\xF0\x9F\x98\x88) 저장시 에러
utf8mb4_general_ci와 utf8mb4_unicode_ci:
https://blossoming-man.tistory.com/entry/utf8mb4generalci%EC%99%80-utf8mb4unicodeci
'SQL > mySQL' 카테고리의 다른 글
table lock 확인 및 해제 (0) | 2022.02.18 |
---|---|
A TABLE 특정 컬럼, B TABLE에 INSERT 하기 (중복 데이터 제외) (0) | 2021.12.06 |
[SQL Exception] Borrow prepareStatement from pool failed; (0) | 2021.08.19 |