MySQL에서 오류 1115(42000): Unknown character set: 'utf8mb4' 메시지가 나타나는 주요 원인은 사용 중인 MySQL 버전이 5.5.3 미만이기 때문입니다. utf8mb4 문자 집합은 MySQL 5.5.3 버전에서 처음 도입되었기 때문에, 그 이전 버전에서는 해당 문자 집합을 인식하지 못하고 오류를 발생시킵니다.
1단계: 현재 MySQL 버전 확인하기
가장 먼저 현재 사용 중인 MySQL 버전을 확인해야 합니다. 버전이 5.5.3보다 낮다면 업그레이드를 통해 문제를 해결할 수 있습니다.
아래 쿼리를 실행하여 현재 버전을 확인하세요.
mysql> select version();
실행 결과 예시입니다. 이 환경의 MySQL 버전은 8.0.12로, 5.5.3보다 높습니다.
+-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec)
2단계: MySQL 업그레이드 진행하기
확인 결과 버전이 5.5.3 미만이라면 MySQL을 최신 버전으로 업그레이드해야 합니다. 업그레이드를 완료한 후에는 기존에 오류 1115를 발생시켰던 동일한 쿼리가 정상적으로 실행됩니다.
3단계: 지원되는 문자 집합 목록 확인하기
업그레이드 후 MySQL에서 지원하는 모든 문자 집합을 확인하려면 아래 쿼리를 실행하세요.
mysql> show character set;
다음은 출력 결과입니다. 목록에서 utf8mb4가 정상적으로 표시되는 것을 확인할 수 있습니다.
+----------+---------------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+---------------------------------+---------------------+--------+ | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | binary | Binary pseudo charset | binary | 1 | | cp1250 | Windows Central European | cp1250_general_ci | 1 | | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 | | cp1256 | Windows Arabic | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | cp852 | DOS Central European | cp852_general_ci | 1 | | cp866 | DOS Russian | cp866_general_ci | 1 | | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 | | euckr | EUC-KR Korean | euckr_korean_ci | 2 | | gb18030 | China National Standard GB18030 | gb18030_chinese_ci | 4 | | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 | | greek | ISO 8859-7 Greek | greek_general_ci | 1 | | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | | hp8 | HP West European | hp8_english_ci | 1 | | keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 | | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 | | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | | macce | Mac Central European | macce_general_ci | 1 | | macroman | Mac West European | macroman_general_ci | 1 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | | tis620 | TIS620 Thai | tis620_thai_ci | 1 | | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | utf16 | UTF-16 Unicode | utf16_general_ci | 4 | | utf16le | UTF-16LE Unicode | utf16le_general_ci | 4 | | utf32 | UTF-32 Unicode | utf32_general_ci | 4 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | utf8mb4 | UTF-8 Unicode | utf8mb4_0900_ai_ci | 4 | +----------+---------------------------------+---------------------+--------+ 41 rows in set (0.01 sec)
참고: utf8과 utf8mb4의 차이점
MySQL의 utf8은 한 문자당 최대 3바이트까지만 지원하는 반면, utf8mb4는 4바이트 유니코드 문자를 완전하게 지원합니다. 따라서 이모지(emoji) 등 특수 문자를 저장해야 하는 최신 프로젝트에서는 utf8mb4 사용이 권장됩니다. 오류를 해결한 후에는 데이터베이스와 테이블의 문자 집합을 utf8mb4로 설정하는 것이 좋습니다.