본문 바로가기
기타

[Django/Devroup] MYSQL에 이모지가 저장되지 않는 문제

by 항붕쿤 2023. 12. 17.

pythonanywhere로 배포도 다 끝내고 도메인도 구매해서 변경했겠다. 이제 진짜로 서비스 시작해보려고 하는데 문제가 하나 생겼다.

그건 바로..

content에 이모지를 넣으면 게시글이 제대로 저장이 되지 않는다..

그래서 찾아보니 mysql은 utf-8 인코딩 방식을 사용하지만 3byte 이내의 문자만 저장할 수 있어서 4byte 크기를 가진 이모지는 저장이 되지 않는 것이었다.

그럼 이를 어떻게 해결할 것인가
방법은 의외로 간단하다

mysql 콘솔에

ALTER TABLE 테이블명 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

명령어를 입력하여 테이블에 있는 문자열의 인코딩 방식을 utf8mb4로 변경하고

아래와 같이 DATABASES OPTIONS에 utf8mb4를 입력해주면

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '이름$default',
        'USER': '이름',
        'PASSWORD': '패스워드',
        'HOST': '이름.mysql.pythonanywhere-services.com',
        'OPTIONS': {
            'charset': 'utf8mb4'
        }
    }
}

 

 

아주 잘 작동한다 :)