• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 1. 문자 세트 지원
    2. 오류 메시지 언어 설정
    3. 문자 세트 추가
    1. 문자 정의 배열
    2. 복잡한 문자 세트의 문자열 조합 지원
    3. 복잡한 문자 세트의 멀티 바이트 문자 지원
    4. 문자 세트에 데이터 정렬 추가
    5. 문자 세트 구성
    6. MySQL Server에서 시간대 지원
    7. MySQL Server의 로케일 지원
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

10.3 문자 세트 추가

10.3.1 문자 정의 배열
10.3.2 복잡한 문자 세트의 문자열 조합 지원
10.3.3 복잡한 문자 세트의 멀티 바이트 문자 지원

이 섹션에서는 MySQL에 문자 집합을 추가하는 방법에 대해 설명합니다. 적절한 절차는 문자 세트가 단순하거나 복잡한 지에 따라 달라집니다.

  • 정렬에 특별한 문자열 비교 루틴을 필요로하지 않고 멀티 바이트 문자의 지원을 필요로하지 않는 문자 세트가 단순한 캐릭터 세트입니다.

  • 이러한 두 가지 기능이 필요한 캐릭터 세트가 복잡한 문자 집합입니다.

예를 들어, greek 과 swe7 은 단순한 캐릭터 세트이지만, big5 와 czech 는 복잡한 문자 집합입니다.

다음 단계를 사용하려면 MySQL 소스 배포판이 필요합니다. 이 단계에서는 MYSET 은 추가 문자 집합의 이름을 나타냅니다.

  1. MYSET 의 <charset> 요소를 sql/share/charsets/Index.xml 파일에 추가합니다. 파일 기존 내용을 새로운 내용을 추가하기위한 가이드로 사용합니다. latin1 <charset> 요소 목록 중 일부는 다음과 같습니다.

     <charset name = "latin1">
       <family> Western </ family>
       <description> cp1252 West European </ description>
       ...
       <collat​​ion name = "latin1_swedish_ci"id = "8"order = "Finnish, Swedish">
         <flag> primary </ flag>
         <flag> compiled </ flag>
       </ collat​​ion>
       <collat​​ion name = "latin1_danish_ci"id = "15"order = "Danish"/>
       ...
       <collat​​ion name = "latin1_bin"id = "47"order = "Binary">
         <flag> binary </ flag>
         <flag> compiled </ flag>
       </ collat​​ion>
       ...
     </ charset>
    

    <charset> 요소는 문자 세트의 모든 데이터 정렬을 나열합니다. 여기에는 적지도 이진 데이터 정렬과 기본 (기본) 데이터 정렬이 포함되어 있습니다. 기본 데이터 정렬은 종종 general_ci (일반 대소 문자 구분)의 접미사를 사용하여 이름을 붙일 수 있습니다. 이진 데이터 정렬을 기본 데이터 정렬하는 것은 가능하지만, 일반적으로이 다릅니다. 기본 데이터 정렬은 primary 플래그를 지정해야합니다. 이진 데이터 정렬은 binary 플래그를 지정해야합니다.

    각각의 데이터 정렬에 고유 한 ID 번호를 할당해야합니다. 1024에서 2047의 ID 범위는 사용자 정의 데이터 정렬에 예약되어 있습니다. 현재 사용되는 데이터 정렬 ID의 최대 값을 검색하려면 다음 쿼리를 사용합니다.

     SELECT MAX (ID) FROM INFORMATION_SCHEMA.COLLATIONS;
    
  2. 이 단계는 추가하는 것이 간단한 문자 집합 또는 복잡한 문자 집합에 따라 달라집니다. 간단한 문자 세트는 구성 파일 만 필요하지만 복잡한 문자 세트에는 데이터 정렬 함수 또는 멀티 바이트 함수 혹은 그 양쪽 모두를 정의하는 C 소스 파일이 필요합니다.

    간단한 문자 집합의 경우 문자 집합 등록 정보를 담은 구성 파일 ( MYSET .xml )을 만듭니다. sql/share/charsets 디렉토리에이 파일을 만듭니다. 이 파일 토대로 latin1.xml 의 사본을 사용할 수 있습니다. 파일의 구문은 매우 간단합니다.

    • 댓글은 일반 XML 주석 ( <!-- text --> )로 묘사됩니다.

    • <map> 배열 요소의 단어는 임의의 수의 공백에 의해 구분됩니다.

    • <map> 배열 요소의 각 단어는 16 진수의 수치로 나타내야합니다.

    • <ctype> 요소의 <map> 배열 요소에는 257 단어가 포함되어 있습니다. 그 후 다른 <map> 배열 요소에는 256 단어가 포함되어 있습니다. 섹션 10.3.1 "문자 정의 배열" 을 참조하십시오.

    • Index.xml 의 문자 세트에 <charset> 요소에 나열 된 데이터 정렬에 대해 문자의 순서를 정의하는 <collation> 요소를 MYSET .xml 에 포함해야합니다.

    복잡한 문자 집합의 경우, 캐릭터 세트 특성에 대해 설명하고 문자 집합에 대한 연산을 제대로 실행하는 데 필요한 지원 루틴을 정의하는 C 소스 파일을 만듭니다.

    • strings 디렉토리에 ctype- MYSET .c 파일을 만듭니다. 기존의 ctype-*.c 파일 중 하나 ( ctype-big5.c 등)을 조사하여 정의 할 필요가있는 것을 확인합니다. 파일의 배열은 ctype_ MYSET , to_lower_ MYSET 등의 이름을 붙일 필요가 있습니다. 이들은 단순한 캐릭터 세트의 배열에 대응합니다. 섹션 10.3.1 "문자 정의 배열" 을 참조하십시오.

    • Index.xml 의 문자 세트에 <charset> 요소에 나열 된 <collation> 요소마다 ctype- MYSET .c 파일이 데이터 정렬의 구현을 제공해야합니다.

    • 문자 집합 문자열 비교 함수가 필요한 경우 섹션 10.3.2 "복잡한 문자 세트의 문자열 조합의 지원" 을 참조하십시오.

    • 문자 세트에서 멀티 바이트 문자의 지원이 필요한 경우 섹션 10.3.3 "복잡한 문자 세트의 멀티 바이트 문자의 지원" 을 참조하십시오.

  3. 구성 정보를 변경합니다. MYSYS 정보를 추가하기위한 가이드로 기존의 구성 정보를 사용합니다. 이 예에서는 문자 세트에 기본 데이터 정렬과 이진 데이터 정렬이 있다고 가정하고 있습니다 만, MYSET 에 추가 데이터 정렬이있는 경우에는 더 많은 행이 필요합니다.

    1. mysys/charset-def.c 을 편집하여 새 문자 집합의 정렬 순서를 "등록"합니다.

      "선언"섹션에 다음 줄을 추가합니다.

       #ifdef HAVE_CHARSET_ MYSET
       extern CHARSET_INFO my_charset_ MYSET _general_ci;
       extern CHARSET_INFO my_charset_ MYSET _bin;
       #endif
      

      "등록"섹션에 다음 줄을 추가합니다.

       #ifdef HAVE_CHARSET_ MYSET
         add_compiled_collation (& my_charset_ MYSET _general_ci);
         add_compiled_collation (& my_charset_ MYSET _bin);
       #endif
      
    2. 문자 세트가 ctype- MYSET .c 를 사용하는 경우 strings/CMakeLists.txt 을 편집하여 ctype- MYSET .c 를 STRINGS_SOURCES 변수의 정의에 추가합니다.

    3. cmake/character_sets.cmake 을 편집합니다.

      1. 알파벳순으로 CHARSETS_AVAILABLE 값에 MYSET 을 추가합니다.

      2. 알파벳순으로 CHARSETS_COMPLEX 값에 MYSET 을 추가합니다. 이것은 단순한 캐릭터 세트도 필요합니다. 없으면 CMake는 -DDEFAULT_CHARSET= MYSET 를 인식하지 않습니다.

  4. 재구성하고 재 컴파일하고 테스트합니다.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved