IT's Jenna

Mysql emoji 삽입하기 (node.js) 본문

Mysql

Mysql emoji 삽입하기 (node.js)

developer Jenna 2022. 5. 10. 19:53

게시글 혹은 댓글을 작성하는 app을 개발할 때 Mysql 데이터 베이스에 다음과 같은 이모티콘이 들어가야 하는 경우가 있습니다.

❤️🤭😆🙂

 

이때 Mysql DB에 이모티콘을 insert 하게 되면 제대로 입력되지 않고 물음표(????)로 표시가 됩니다.

Why?

이모티콘은 utf8로 인코딩될때 4byte 글자로 변환되는데 mysql은 utf8 문자셋을 3byte까지만 지원하기에 생기는 문제입니다.

Solution

ALTER DATABASE db_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

위와 같이 쿼리문을 실행시켜 table의 caracter set과 collate를 utf8mb4로 변경시켜 줍니다.

 

하지만 제가 시도했을때 해당 쿼리문이 제대로 돌아가지 않고 timeout에 걸려서 실행이 되지 않았습니다. 이런 경우는 mysql 테이블 내에서 setting을 직접 변경시켜줄 수도 있습니다.

 

<Charset/Collation 변경>

emoji가 들어가야하는 컬럼의 Charset/Collation을 utf8mb4/utf8mb4_general_ci로 직접 변경 후 apply를 해줄 수도 있습니다.


이렇게만 하면 바로 이모지가 입력될 줄 알았는데...

세팅을 변경했음에도 불구하고 이모지 삽입이 안되더라구요! 이때 해결방법은 서버 코드의 database 설정에 charset을 추가해주면 됩니다. utf8mb4로 charset을 추가 후 실행시키면 emoji가 정상적으로 입력되는 것을 확인할 수 있습니다!

 

<charset 추가>

 

'Mysql' 카테고리의 다른 글

Mysql 이벤트 스케쥴러 (Event Scheduler)  (0) 2021.06.23
Mysql - LIMIT  (0) 2021.05.12
Mysql - group_concat  (0) 2021.04.26
Mysql - ORDER BY & ALIAS  (0) 2021.04.26
Mysql - GROUP BY & CASE  (0) 2021.01.21
Comments