MariaDB, MySQL 이모티콘(\xF0\x9F\x98\x88) 저장시 에러


MariaDB, MySQL 이모티콘(\xF0\x9F\x98\x88) 저장시 에러




최초 작성일 : 2021-09-25 | 수정일 : 2021-09-25 | 조회수 : 744

MariaDB이나 MySQL에서 이모티콘 저장이 아래와 같은 에러가 날때가 있다.

Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x98\x88' for column 'message' at row 2


그럼 DB character set을 변경해야합니다.




먼저 my.cnf 파일에 아래와 같이 적어 줍니다.



[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci



그리고 아래와 같이 각 DB, Table, Column에 대해서 character set을 변경해줍니다.

# For each database:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
# For each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# For each column:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# (Don’t blindly copy-paste this! The exact statement depends on the column type, maximum length, and other properties. The above line is just an example for a `VARCHAR` column.)


그리고 DB는 재시작해주세요.

그럼 이제 정상적으로 작동합니다.



store procedure에서 혹시 아래와 같이 발생하고 있다면 프로시저를 다시만들어 주셔야합니다.

SHOW PROCEDURE STATUS;

명령어로 우선 확인해보세요. 



org.springframework.dao.DataIntegrityViolationException: Error calling CallableStatement.getMoreResults; SQL [PROC_SEND_PUSH_ANDROID_ALL]; nested exception is org.hibernate.exception.DataException: Error calling CallableStatement.getMoreResults


Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x98\xA1' for column 'message' at row 2



해당 파라미터 뒤에 CHARSET utf8mb4를 붙여주세요.

아래와 같이

CREATE DEFINER=`blindAdmin`@`%` PROCEDURE `PROC_SEND_PUSH_ANDROID_ALL`(pushToken varchar(500), title varchar(200) CHARSET utf8mb4, message varchar(200) CHARSET utf8mb4, ticker varchar(200), pushType int(11), param1 varchar(200), param2 varchar(200), param3 varchar(200), param4 varchar(200), param5 varchar(200), param6 varchar(200), param7 varchar(200), param8 varchar(200), param9 varchar(200))


참고1 : http://xarmykwon.dothome.co.kr/board/post/48

참고2 : https://mathiasbynens.be/notes/mysql-utf8mb4

참고3 : http://dba.stackexchange.com/questions/93899/stored-procedure-to-check-if-username-exists



출처: https://88oy.tistory.com/435 [팔팔청춘]

닉네임:
댓글내용:
🚀 추천글
새글

애플컴퓨터 신제품, 2025년 출시될 최신 정보 총정리!
2025-08-23
  • 애플컴퓨터
  • 애플 신제품
  • 2025년 출시
애플컴퓨터 신제품, 2025년 기대작 총정리!
2025-08-22
  • 애플컴퓨터
  • 2025년 신제품
  • 맥북 프로
애플컴퓨터 신제품, 2025년 최신 소식 총정리!
2025-08-21
  • 애플컴퓨터
  • 2025년 신제품
  • 아이폰 17
애플컴퓨터 최신 소식: M4 칩 성능 폭발! 🚀
2025-08-20
  • M4 칩
  • 애플 M4
  • 애플 신제품
애플컴퓨터 최신 M5 칩 성능 '깜짝'!
2025-08-20
  • 애플 M5 칩
  • M5 칩 성능
  • 애플 실리콘
추천글
카슈미르, 전쟁의 불씨: 국제적 긴장의 중심에서의 갈등 분석
2025-08-20
  • 카슈미르분쟁
  • 인도파키스탄
  • 카르길전쟁




📸 이미지 프롬프트 복사 완료!
이제 어떤 이미지 생성 도구로 이동하시겠어요?
🧠 ImageFX 🧪 Whisk