MariaDB에서 테이블을 utf8mb4로 바꿨는데도 이모지 넣으면 1366이 납니다
조회 0 · 댓글 0
지난번 nginx 뒤 스프링부트 질문 올렸던 그 서버입니다. 사용자 댓글 기능을 붙였는데 본문에 이모지가 들어간 요청만 저장이 실패합니다. 환경은 Ubuntu 22.04, MariaDB 10.6, Spring Boot 3.2(JDBC는 mariadb-java-client) 입니다.
앱 로그에는 아래처럼 찍히고, 같은 INSERT를 mysql 클라이언트에서 직접 넣어도 동일하게 막힙니다.
java.sql.SQLException: (conn=812) Incorrect string value: '\xF0\x9F\x98\x80' for column 'content' at row 1
MariaDB [sarc]> INSERT INTO comment(content) VALUES ('hi \xF0\x9F\x98\x80');
ERROR 1366 (22007): Incorrect string value: '\xF0\x9F\x98\x80' for column 'content' at row 1이모지 때문인 건 알아서 테이블 문자셋을 utf8mb4로 바꿨습니다. 확인해보면 테이블 기본값은 바뀐 걸로 나옵니다.
ALTER TABLE comment CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
MariaDB [sarc]> SHOW TABLE STATUS LIKE 'comment'\G
...
Collation: utf8mb4_unicode_ci그런데도 같은 ERROR 1366이 그대로 납니다. 한글이나 영문만 든 댓글은 정상 저장되고, 이모지 들어간 경우만 실패합니다. my.cnf의 [mysqld]에 character-set-server=utf8mb4도 넣고 재기동해봤지만 증상은 같습니다.
테이블을 utf8mb4로 바꿨는데 왜 4바이트 문자만 여전히 거부되는 건지, 어디를 더 봐야 하는지 알려주실 수 있을까요?
로그인 후 답글을 남길 수 있습니다.