본문 바로가기

개발이야기

[mariadb] mariadb에서 utf8mb4 처리

현재 mariadb를 사용중인데, 기본 character-set을 utf8_general_ci 으로 설정해서 사용중이다.

그런데 가끔씩 database에 insert 처리를 할 경우 에러가 발생하는 경우가 발생하는데, 

utf-8인데도 왜 에러가 나나 싶었는데, 알고 보니 mariadb의 utf8 은 3byte로 처리되는데, 

유니코드 U+1000 이상문자의 경우 4 byte가 필요하면서 (이 경우는 이모지(emoji) 가 대부분 문제임)

에러가 발생하고 있었고, 현재는 무시하고 있지만,

추후에는 기본 문자셋을 utf8mb4_unicode_ci 으로 변경해야 할듯 싶다.

(아무래도 3byte에서 4byte로 늘어나기 때문에 기존의 컬럼길이에 대해서 고민이 필요하다)

우선 기존의 문자셋을 변경하는 방안을 정리해놓는다.

1. 데이터베이스 문자셋 변경 :

ALTER DATABASE [데이터베이스명] CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

2. 기존 테이블 문자셋변경

ALTER TABLE [테이블명] CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;    

참고로 Mariadb는 버전이 5.5 이상에서만 지원 (MySQL도 동일한 방식으로 사용가능)