본문 바로가기
Q&A해결2025년 3월 22일1분 읽기

MySQL에서 emoji 저장하면 깨지는 문제 — utf8 vs utf8mb4

D
DB담당자
조회 2024댓글 2

사용자 댓글에 이모지(😀)를 저장하면 ??? 또는 에러가 발생합니다.

Incorrect string value: '\xF0\x9F\x98\x80' for column 'content'

댓글 2

김김영삼1년 전

MySQL의 utf8은 3바이트만 지원해서 이모지(4바이트)가 안 됩니다. utf8mb4로 변경해야 합니다:

-- 테이블 문자셋 변경
ALTER TABLE comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- DB 전체 변경
ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- my.cnf 설정
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

연결 문자열에도 charset=utf8mb4를 추가하세요.

DDB담당자(guest)1년 전
이 답변 진짜 최고입니다. 감사합니다 👍
Ctrl+Enter로 등록