요청값으로 이미지가 들어왔더니 DB측에서 유효하지 않은 값이라고 오류가 발생했다.
MySQL의 기본 문자셋은 utf8이고 이는 3바이트까지 지원하는데, 대부분의 이모지는 4바이트를 차지하기에 이를 저장하는데 오류가 난 것이다.
데이터베이스에서는 테이블 또는 컬럼의 문자셋을 utf8mb4로 변경함으로써 이 문제를 해결할 수 있었고,
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
{
"charset": "utf8mb4_unicode_ci",
"extra": {
"charset": "utf8mb4_unicode_ci",
}
}
nest에서는 typeorm을 세팅하는데 위와 같이 문자셋을 적용해줌으로 처리해줄 수 있었다.