안녕세계
[MySQL] MySQL character set encoding 변경 (utf8, utf8mb4) 본문
[MySQL] MySQL character set encoding 변경 (utf8, utf8mb4)
Junhong Kim 2018. 3. 29. 15:55728x90
반응형
MySQL encoding 변경 (utf8, utf8mb4)
MySQL 기본 패키지는 character set 이
latin1
로 설정되어있습니다.
character set 을utf8
로 설정하여 한글 및 다른 언어가 께지는 것을 처리해야합니다.
때로는utf8mb4
로 설정하는 경우도 있는데 utf8mb4는emoji
를 데이터베이스에 저장할 수 있습니다.
emoji는4byte
문자이기 때문에utf8
의 상위 호환인utf8mb4
를 사용해야 저장할 수 있습니다.NOTE: character set 이 utf8 인 상태에서 emoji를 데이터베이스 저장하려면
error
가 발생합니다.
character set 확인
방법 (1)
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'c%';
+--------------------------+------------------------------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/Cellar/mysql/5.7.21/share/mysql/charsets/ |
| check_proxy_users | OFF |
| collation_connection | utf8mb4_unicode_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
| completion_type | NO_CHAIN |
| concurrent_insert | AUTO |
| connect_timeout | 10 |
| core_file | OFF |
+--------------------------+------------------------------------------------------+
방법 (2)
mysql> STATUS
--------------
mysql Ver 14.14 Distrib 5.7.21, for osx10.11 (x86_64) using EditLine wrapper
Connection id: 29
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.21 Homebrew
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /tmp/mysql.sock
Uptime: 20 hours 48 min 49 sec
Threads: 3 Questions: 1654 Slow queries: 0 Opens: 294 Flush tables: 1 Open tables: 216 Queries per second avg: 0.022
--------------
- Server characterset : 데이터베이스 생성 시 기본 값을 지정해 주지 않을 경우, 이 값으로 데이터 베이스 캐릭터 셋이 설정 됨.
- DB characterset : 테이블 생성 시 기본 값을 지정해 주지 않을 경우, 이 값으로 테이블의 캐릭터 셋이 설정 됨.
- Client characterset : 클라이언트 인코딩 설정 값.
방법(3)
SELECT * FROM information_schema.SCHEMATA S
위와 다르게 character set이 저장되어있을 경우 명령어를 통해서 mysql
을 사용할때 변경 할 수 있지만,
이렇게 하면 데몬이 재실행 될때마다 다시 latin1
으로 돌아가기 때문에 기본 값으로 변경하겠습니다.
character set 기본 값을 utf8mb4로 변경
(1) my.cnf 파일을 작성합니다.
vi /etc/my.cnf
(2) my.cnf에 다음 설정을 합니다.
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqldump]
default-character-set = utf8mb4
[mysqld]
skip-character-set-client-handshake
init_connect="SET collation_connection = utf8mb4_unicode_ci"
init_connect="SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci"
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
- skip-character-set-client-handshake: 클라이언트의 인코딩 설정을 무시하고 데이터베이스 인코딩을 씁니다.
- init_connect: 데이터베이스에 connect할 경우 실행되는 스크립트입니다.
728x90
반응형
'Database > MySQL' 카테고리의 다른 글
[MySQL] DBeaver 접속 오류 (0) | 2020.02.12 |
---|---|
[MySQL] MySQL 완전 삭제 방법 (0) | 2018.03.29 |
[MySQL] MySQL 비밀번호 변경 방법 (4) | 2018.03.29 |
[MySQL] MacOS에서 MySQL 설치 (with. homebrew) (0) | 2018.03.29 |
Comments