본문 바로가기
DBMS(DataBase Management System)/MariaDB

[MariaDB] Incorrect string value "\xF0\x9F\x8E\xB5\x0A\x0A" 이모지 오류 조치

by 연구자 공학코드 2021. 4. 8.

공지사항

  1. 제가 운영하는 네이버 카페 개발자 커뮤니티 코어큐브(https://cafe.naver.com/ewsncube)에 가입하시면 컴퓨터 관련 학습 자료와 질의응답을 제공받으실 수 있습니다.

728x90
반응형

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.

728x90
반응형

댓글