MySQL8.0에서 문자 코드를 변경하는 방법 (UTF8 대응)
개요
MySQL8.0에서 문자 코드를 설정하려고 할 때, 지금까지의 버전 (7.x 이전)과는 조금 설정 파일 (my.ini)과 내용이 다르므로 소개합니다.
환경
(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
참고
Reference
이 문제에 관하여(MySQL8.0에서 문자 코드를 변경하는 방법 (UTF8 대응)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sfatsfc/items/ec4bad218e1d263e18ab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)