mysql database 이모티콘 설정(utf8mb4)

jomminii_before·2020년 3월 14일
4

프로젝트를 진행하다보니 데이터베이스에 이모티콘(✅햇살 가득한 집 👍 맞춤형 중개 💖💖코로나 보다 강한 컨디션과 방크기!! 양창!!💖💖)을 넣어야했습니다. 기존 UTF-8 charset 만으로는 DB에 저장할 수 없다고 해서 DB를 만들 때 utf8mb4 설정을 해줬는데도, DB에서는 django.db.utils.operationalerror incorrect string value utf8mb4 not work 이런 식의 에러를 계속 뱉어내더군요. 결론은 장고와 mysql을 연결할 때 charset 을 추가 설정해주면 됩니다.

DB를 처음 세팅하는 것부터 한 번 해봅시다.


mysql에서 아래와 같이 데이터베이스를 만드는 명령어를 입력합니다. danaebang의 자리에 만들고자 하는 데이터베이스 이름을 넣으시면 됩니다. 이름 뒤에 나오는 character set 설정으로 이 데이터베이스가 utf8mb4를 받아들일 수 있도록 합니다.

mysql> create database danaebang character set utf8mb4 collate utf8mb4_general_ci;
Query OK, 1 row affected (0.00 sec)

이 설정을 하고 mysql에서 show variables like 'c%';를 쳐보면 utf8mb4 설정이 된 것을 볼 수 있습니다.


원래는 이 과정까지만 하면 끝인줄 알았는데, 장고에도 추가로 설정을 넣어줘야했습니다.

장고와 mysql을 연결하는 과정은 아래 글에 설명해두었습니다.

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',    [1]
        'NAME': 'daneabang',                     [2]
        'USER': 'root',                          [3]
        'PASSWORD': 'password',                  [4]
        'HOST': 'localhost',                     [5]
        'PORT': '3306',                          [6]
    }
}

기존에는 위와 같이 6번까지만 설정을 했습니다. 하지만 이렇게만하면 장고에서 DB에 이모티콘을 넣으려고 하면 에러가 납니다. 이모티콘도 받을 수 있게 아래와 같은 설정을 7번과 같이 추가해줍니다.

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',    [1]
        'NAME': 'danaebang',                     [2]
        'USER': 'root',                          [3]
        'PASSWORD': 'password',                  [4]
        'HOST': 'localhost',                     [5]
        'PORT': '3306',                          [6]
        'OPTIONS’ : {                            [7]
            ‘charset’ : utf8mb4’
        }
    }
}


이 설정을 모두 마무리하고 데이터를 넣어주면 아래와 같이 이모티콘이 이쁘게 DB에 들어간 것을 볼 수 있습니다.

profile
https://velog.io/@jomminii 로 이동했습니다.

0개의 댓글