728x90

    MySQL에서 문자 인코딩 문제는 종종 데이터 깨짐이나 정렬 순서 오류의 원인이 됩니다. 이를 방지하려면, **문자셋(Charset)**과 Collation 설정을 정확히 이해하고 사용하는 것이 중요합니다. 이번 글에서는 MySQL의 디폴트 문자셋과 Collation을 확인하고 관리하는 방법을 정리합니다.

    1. 서버(Server)의 기본 문자셋과 Collation 확인

    서버 전체의 기본 문자셋과 정렬 규칙은 다음 쿼리로 확인할 수 있습니다:

    SHOW VARIABLES LIKE 'character_set_server';
    SHOW VARIABLES LIKE 'collation_server';
    
    
    +----------------------+----------+
    | Variable_name        | Value    |
    +----------------------+----------+
    | character_set_server | utf8mb4  |
    | collation_server     | utf8mb4_unicode_ci |
    +----------------------+----------+

     

    2. 현재 세션(Session)에서 사용 중인 문자셋 확인

    세션에서 어떤 문자셋이 적용 중인지 확인하고 싶다면 아래 쿼리를 사용하세요.

    SHOW VARIABLES LIKE 'character_set_%';
    SHOW VARIABLES LIKE 'collation_%';

     

    3. 특정 데이터베이스의 문자셋과 Collation 확인

    데이터베이스 생성 시 별도로 지정하지 않으면, 서버의 디폴트 문자셋과 Collation이 사용됩니다. 특정 데이터베이스의 설정은 다음과 같이 조회할 수 있습니다:

    SELECT schema_name, default_character_set_name, default_collation_name
    FROM information_schema.schemata
    WHERE schema_name = 'your_database_name';

     

    4. 테이블 및 컬럼 수준에서의 문자셋 확인

    SELECT table_name, table_collation
    FROM information_schema.tables
    WHERE table_schema = 'your_database_name';
    
    
    SELECT table_name, column_name, character_set_name, collation_name
    FROM information_schema.columns
    WHERE table_schema = 'your_database_name';

    5. 데이터베이스 생성 시 문자셋 명시하기

    새로운 데이터베이스를 만들 때는 명시적으로 문자셋과 Collation을 지정하는 것이 좋습니다:

    CREATE DATABASE your_database_name
    DEFAULT CHARACTER SET utf8mb4
    DEFAULT COLLATE utf8mb4_unicode_ci;

     

    참고: utf8mb3 vs utf8mb4

    구분utf8mb3utf8mb4 (권장)
    최대 바이트 3 bytes 4 bytes
    이모지 저장 ❌ 불가능 ✅ 가능
    표준 여부 ❌ 비표준 ✅ 표준 UTF-8

    'IT > MySql' 카테고리의 다른 글

    콜레이션(Collation)  (0) 2017.07.10

    Posted by 천상나타