MySQL은 character set을 따로 설정하지 않으면 MySQL5.7에서는 latin 1, MySQL8은 utf8mb4로 설정되어 있다.
그래서 utf8mb4 인코딩이 기본 캐릭터 셋이 되기 이전에는 MySQL을 설치하고 난 이후에 기본적으로 언어 세팅을 변경해줘야 했다.
Character set 확인하는 방법
1. mysql 클라이언트에서 status 명령어를 입력한다.
2. mysql 콘솔에서 show variable를 입력한다.
show variables like 'char%';
utf8mb4 인코딩
기존 MySQL은 3byte의 UTF-8를 사용했다. 그래서 최근에 많이 사용되는 emoji와 같은 글자를 표현하기 위해 필요한 4byte를 지원하지 못했었는데 이 문제를 해결하기 위해서 만들어진 인코딩 방식이다.
다국어를 지원하지 않는 서비스라도 emoji나 특수 문자를 원활하게 사용하려면 utf8mb4로 변경하는 것이 좋다.
character set 변경 방법
my.cnf 수정
...
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
※ 설정 적용 후에는 MySQL 재시작 필수
UTF-8로 설정된 기존 데이터베이스나 테이블을 변경할 때
ALTER DATABASE <database_name> CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ref.
- https://www.lesstif.com/dbms/mysql-rhel-centos-ubuntu-20775198.html#MySQL%EA%B8%B0%EB%B3%B8%EC%BA%90%EB%A6%AD%ED%84%B0%EC%85%8B%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0RHEL/CentOS/Ubuntu-%EC%9D%B4%EB%AA%A8%EC%A7%80%EC%A7%80%EC%9B%90%EC%9D%84%EC%9C%84%ED%95%9CUTF8MB4%EC%9D%B8%EC%BD%94%EB%94%A9
- https://calvinjmkim.tistory.com/23
- https://gunu91.tistory.com/36
'DB' 카테고리의 다른 글
[MySQL] 실행계획 알아보기 (1) | 2023.01.24 |
---|---|
[DB] ORM(Object Relational Mapping) 개념과 장/단점 (0) | 2022.09.12 |
[MariaDB] 계층형 쿼리(Hierarchical Queries) (0) | 2022.03.07 |
[Oracle] 계층형 쿼리(Hierarchical Queries) (0) | 2022.03.04 |
[MyBatis] All Element Are Null 오류 (0) | 2022.02.10 |