현재 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도 동일한 방식으로 사용가능)