정말 오랜만에 하는 포스팅이다 !
최근에 프로젝트, 회사업무, 코딩테스트 준비때매 너무 정신없이 바빴다.
프로젝트는 기획이 어느정도 나오고 한달 넘게..? 걸려서 모든 API 개발을 완료했다.
처음에는 간단하게 하려고 했는데 점점 욕심이 생겨서 API도 50개 넘게 생겨버렸다...^^
예비군 동미참 가느라 3일 빼고 전부 달렸네.. 따흑
그래도 내꺼를 만드니깐 확실히 재밌긴하다 !
프로젝트에서 "테마" 를 고르는 부분이있는데
각각의 테마에 이모지가 붙어있어서 해당 이모지를 "코스이름"을 만들어줄때 붙혀주기로 했다.
이런식으로 코스이름에 이모지를 붙여 줘야 한다.
그래서 API 로직을 짜고 실행을 시켰더니 에러가 나왔다.
엥 이게 뭐지 싶었다.
그래서 ChatGPT 와 구글링을 해봤다.
이모지를 저장하려면 기존의 utf8 문자셋으로는 부족합니다.
이유는 utf8 이 MySQL에서 3바이트까지만 지원하기 때문입니다.
대부분의 이모지는 4바이트를 필요로 하기 때문에, utf8mb4 문자셋으로 전환해야 합니다.
이 문자셋은 모든 유니코드 문자를 지원하며, 이모지도 문제없이 저장할 수 있습니다.
utf8 문자셋이 문제였다!
MySQL과 TypeORM 두가지 설정을 바꿔줘야지 이모지를 저장할 수 있다.
MySQL 문자셋 변경하기
먼저 MySQL을 바꿔보자.
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
해당 명령어로 변경이 가능하다.
내 DB는 다행히 이미 utf8mb4_unicode_ci 로 되어있었다.
TypeORM 연결 설정
NestJS 프로젝트에서 TypeORM을 사용한다면, 연결 설정에 utf8mb4 문자셋을 명시해야 한다.
app.module.ts 파일에서 데이터베이스 연결 설정을 다음과 같이 수정하면 된다.
TypeOrmModule.forRoot({
// 다른 설정들...
charset: 'utf8mb4',
});
나는 해당 연결 설정이 기존에 없었다.
그래서 이모지 저장이 안됬었나보다..!
설정을 하고 저장을 한 후 다시 코드를 실행 시켜 보았다.
이제 DB에 이모지가 정상적으로 쌓였다 !
'Project > SeoulSync82' 카테고리의 다른 글
[SeoulSync82] HTTPS와 SameSite로 해결한 서로 다른 도메인의 Cookie 전송 이슈 (2) | 2024.01.29 |
---|