MySQL8.0에서 문자 코드를 변경하는 방법 (UTF8 대응)

3597 단어 MySQL8.0MySQLutf8mb4

개요



MySQL8.0에서 문자 코드를 설정하려고 할 때, 지금까지의 버전 (7.x 이전)과는 조금 설정 파일 (my.ini)과 내용이 다르므로 소개합니다.

환경


  • Windows10
  • MySQL 8.0.12

  • (LinuxOS의 경우 my.ini를 /etc/my.cnf로 바꾸어 읽으면 똑같이 할 수 있습니다.)

    전체 문자 코드 설정을 cp932에서 utf8로 바꿀 때까지



    utf8로 작성된 sql 파일을 읽는 것을 기본값으로하기 위해 MySQL 측의 문자 코드를 변경하는 것.

    기존 버전이라면 다음 두 곳을 변경하는 것이 일반적입니다.

    (설치 프로그램의 기본 설정은 C:\ProgramData\MySQL\MySQL Server 8.0 아래에 있는 my.ini에 설명되어 있습니다.)
    
    [mysqld]
    default-character-set=utf8
    
    ## ...中略...
    
    character-set-server=utf8
    

    본래라면, 이것으로 MySQL80 서비스를 タスクマネージャー > サービス タブ 로부터 재기동하는 것만으로 갈 수 있습니다만,

    mysql을 시작하고 show variables like "chara%";를 확인해 보면



    기본 인코딩(cp932)을 그대로 둡니다.

    여러가지 조사한 결과, 아래의 UTF8의 설정을 my.ini 에 수동으로 넣을 필요가 있는 것을 알았습니다.
    ## UTF 8 Settings
    init-connect='SET NAMES utf8'
    collation_server=utf8_unicode_ci
    character_set_server=utf8
    skip-character-set-client-handshake
    

    이것을 [mysqld] 라고 쓰여진 직후에 배치합니다.
    (mysqld는 MySQL 서버입니다)

    언더바( _ )와 하이픈( - )의 차이가 번잡하지만, 이것으로 맞는 것 같습니다.

    지금까지 끝나면 MySQL80 서버를 다시 시작합니다.


    タスクマネージャー > サービス タブ 보다.

    마지막으로 테이블의 데이터를 다시 만들고 완료. (각 자입하고 싶은 데이터를 다시 넣어 주세요.)

    mysql에서 문자 코드를 확인해 보면 무사히 변경되었습니다.



    이모티콘 등에 대응할 필요가 있는 경우(4bit의 UTF-8 문제)



    참고로 sql 읽을 때 아래와 같은 warning이 나오는 경우
    Incorrect string value: '\xF0\xA6\x9A\xB0\xE7\x94...' for column 'name' at row 1
    
    utf8 에서 설정한 위치를 utf8mb4 로 재설정하면 잘 될 수 있습니다. (MySQL5.5.3 이상)
    utf8mb4는 UTF-8을 4바이트 문자 코드로 취급하기 위한 설정입니다.

    UTF-8 은 1~4 바이트로 1 문자가 구성되는 문자 코드입니다만, MySQL 에서는 utf8 의 설정에서는 4 바이트의 UTF8 를 취급할 수 없습니다.
    utf8mb4 로 설정하면 이모티콘 등도 등록할 수 있게 됩니다.

    지금부터 신규로 설정한다면 utf8mb4 쪽이 좋다.

    ↓ 설정 예
    ## UTF 8 mb4 Settings
    init-connect='SET NAMES utf8mb4'
    collation_server=utf8mb4_unicode_ci
    character_set_server=utf8mb4
    skip-character-set-client-handshake
    

    참고


  • MySQL 5.x 문자 코드 설정
  • MySQL(5.7)의 일본어 문자 깨 회피! 문자 코드를 확인하고 변경하는 방법
  • MySQL 깨짐을 방지하는 문자 코드 확인 및 설정
  • MySQL Incorrect string value: 솔루션
  • MySQL (InnoDB)에서 charset을 utf8mb4로 만드는주의 사항의 현재
  • 좋은 웹페이지 즐겨찾기