MariaDB를 데이터 저장소로 사용하고 있는 프로그램을 개발 중에 특정 문자열을 추가(INSERT)하니 "(0x80004005): Incorrect string value: '\xF0\x9F\x8E\xB5\x0A\x0A' for column" 이런 오류가 발생하는 경우가 있다. 이런 문자값은 보통 이모지를 입력했을 때 나타나며 이모지를 나타내기 위해서는 4바이트가 필요하다. 하지만 현재 설정된 인코딩이 그 값을 지원하지 못하고 있지 못하면 저런 오류가 발생한다. 이를 해결하기 위해서는 데이터베이스 인코딩 설정을 'utf8mb4'로 하면 제대로 동작한다.
1. MariaDB 인코딩 설정을 변경한다.
아래와 같이 명령어를 입력하여 MariaDB 서버의 인코딩 설정을 변경한다.
vi /etc/my.cnf.d/server.cnf
아래와 같이 명령어를 입력하여 MariaDB 클라이언트의 인코딩 설정을 변경한다.
vi /etc/my.cnf.d/mysql-clients.cnf
2. 기존 데이터베이스와 테이블, 칼럼 인코딩 설정을 변경한다.
SQL로 인코딩 설정을 변경하는 방법도 있겠지만 본 글에서는 HiediSQL을 사용하여 인코딩 설정을 변경한다. 기존 데이터베이스를 우클릭하여 '편집'을 누르면 아래 사진과 같은 창이나타는데 '조합(인코딩)'을 'utf8mb4_general_ci'로 변경한다.
테이블을 클릭하여 '옵션'-'기본 조합'의 설정을 'utf8mb4_general_ci'로 변경한다.
하단의 칼럼 정보로 가서 우측의 '조합(인코딩)'을 클릭하여 인코딩 설정을 'utf8mb4_general_ci'로 변경한다.
이렇게 변경하면 이모지 문자가 포함된 문자열의 삽입(INSERT)가 정상적으로 수행된다. 하지만 기존 가변 3바이트의 utf8을 사용하던 시스템의 경우 인덱스 길이 문제 등이 발생할 수 있으므로 다방면에서 검토가 필요하다.
참고문서
[1] "MariaDB, MySQL 이모티콘(\xF0\x9F\x98\x88) 저장시 에러", 팔팔청춘, 2016-12-22.
[2] "Adopt Your Emoji At Unicode", 이모지피디아, 2016-11-14.
'DBMS(DataBase Management System) > MariaDB' 카테고리의 다른 글
[MariaDB] HeidiSQL로 CSV로 저장한 데이터를 불러오는 방법 (0) | 2022.12.02 |
---|---|
[MariaDB] 전역 로그 설정 및 로그 확인 (0) | 2022.11.24 |
[Windows] MariaDB 최대 세션 수 조정하기 (0) | 2022.10.31 |
[MariaDB 10.3/윈도우] 계정 비밀번호 재설정 (0) | 2022.02.19 |
HeidiSQL 오류 "library libmariadb.dll could not be loaded" 조치 방법 (0) | 2021.08.08 |
댓글