Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 오류 1115(42000) 해결 방법: 알 수 없는 문자 집합 'utf8mb4' 오류 수정하기

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로 설정하는 것이 좋습니다.