반응형
안녕하세요.
진행하고 있는 프로젝트에서 친구에게 배타테스트를 진행했는데 편지지에 이모티콘이 들어가면 오류가 난다는 것을 알게되었습니다.
왜 이모티콘이 들어가지 않는걸까요? 인코딩은 모두 utf8로 설정했습니다.
sql 에러는 아래와 같습니다.
java.sql.SQLException: Incorrect string value: '\xF0\x9F\xA4\xAF' for column '칼럼명' at row 1
mysql은 이모티콘을 인코딩할 때, 4byte로 변환되는데 utf8 은 문자셋을 3byte까지만 지원하기 때문입니다.
해결책
인코딩 방식을 utf8mb4로 변경해줍니다.
ALTER TABLE 테이블명 MODIFY COLUMN 컬럼 VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
utf8mb4는 4byte로 문자를 표현하여 전체 유니코드 범위 내의 문자를 지원하기 때문에 이모티콘 또한 저장할 수 있습니다.
/etc/mysql/my.cnf 에 들어가서 default-character-set 또한, utf8mb4로 변경해주었습니다.
vi /etc/mysql/my.cnf
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collaction-server = utf8mb4_unicode_ci
반응형
'💾database' 카테고리의 다른 글
[프로그래머스 / SQL] SELECT 문 부수기 (0) | 2024.09.18 |
---|---|
[데이터 베이스] SQL 고급 문법 1 (내장 함수, NULL 값 처리, 부속 질의) (1) | 2023.02.19 |
[데이터 베이스] SQL 기본 문법 3 (CREATE, ALTER, INSERT, UPDATE, DELETE) (0) | 2023.02.15 |
[데이터 베이스] SQL 기본 문법 2 (JOIN, SUBQUERY) (0) | 2023.02.15 |
[데이터 베이스] SQL 기본 문법 1 (SELECT, WHERE, ORDER BY, GROUP BY) (0) | 2023.02.15 |