본문 바로가기
Database

mysql / utf8_general_ci에서 utf8mb4_general_ci로 변환 (feat. 레츠투 이모지)

by 모닝위즈 2023. 11. 21.
반응형
mysql> show variables like 'char%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+

 

기존 mysql이 utf8_general_ci로 세팅이 되어 있다.

 

# 기존 설정을 백업해두자.
cp /etc/my.cnf /bak/my.cnf_org

# my.cnf 설정을 수정해야한다.
vi /etc/my.cnf

 

수정해야할 부분이 있다.

[client]
default-character-set = utf8mb4

[mysqld]
init_connect = SET collation_connection = utf8mb4_general_ci
init_connect = SET NAMES utf8mb4
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

[mysql]
no-auto-rehash
default-character-set = utf8mb4

[mysqldump]
default-character-set = utf8mb4

 

위 부분을 수정해주어야 한다.

mysqldump의 경우, 그때그때 옵션에 --default-character-set utf8mb4 옵션을 넣을 거라면 안해줘도 된다.

 

 

수정되고 나면 아래와 같이 설정되어 있다.

이제부터 데이터베이스를 만들 때 테이블을 만들 때 기본적으로 아래의 설정을 따라가게 된다.

mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------------+
| 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/mysql/share/charsets/ |
+--------------------------+----------------------------------+

 

* 하지만, 이미 만들어져 있던 데이터베이스는 기존의 설정을 그대로 유지한 채로 남게된다.

* 기존 데이터베이스의 설정도 바꾸고 싶을 때는 ALTER를 통하여 수정하면 된다.

ALTER DATABASE [mydatabasename] DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

 

* 그래도 테이블은 또 기존 설정을 그대로 유지한채 남아있다.

alter table [tablename] convert to character set utf8mb4 collate utf8mb4_general_ci;

 

 

이제 이모지가 사용가능하게 되었다.

 

 

Chatracter Set에 따른 이모지 인식의 차이는

https://blog.naver.com/sory1008/222401508955

 

[MySQL] collation 의 이모지 식별 (emoji)

서로 다른 collation 컬럼 생성 이모지 insert 아래와 같이 모든 컬럼에 이모지 데이터가 잘 들어갔음을 알...

blog.naver.com

이 엄청나신 분을 참고하면 됨.

 

 

이모지 종류를 확인할 수 있는 사이트

https://www.emojiengine.com/ko/keyboard/

 

이모티콘 키보드 - Emoji Engine 😂

...

www.emojiengine.com

 

댓글