가끔 conf 파일의 설정 미비 혹은 database 생성 구문에서 빠뜨려서 charset, collation이 의도하지 않은 것을 사용하는 경우가 있다
1. Charset, Collation 확인하기
# database 생성 구문 확인
show create database <database_name>;
# database charset, collation 확인
SELECT default_character_set_name, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE schema_name = <database_name>;
# table 컬럼별 charset, collation 확인
SHOW FULL COLUMNS FROM <database_name>.<table_name>;
# table 생성 구문 확인
show create table <database_name>.<table_name>;
2. Charset, Collation 변경하기 (예시로 Charset=utf8mb4, Collation=utf8mb4_unicode_ci 사용)
# 기존 database charset, collation 변경 to utf8mb4 (for emoji)
ALTER DATABASE <database_name> CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# 기존 table charset, collation 변경 to utf8mb4 (for emoji)
ALTER TABLE <database_name>.<table_name> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. 확인하기
show variables like 'char%';
번외) 직접 mysql의 conf 파일을 수정하는 경우
# vi /etc/mysql/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 재시작 > service mysql restart