본문 바로가기

Django

Django 데이터베이스 mysql 설정하기

Django setting mysql

collation에 대해서는 각 모델의 프로퍼티를 설정할 때 마다 지정해줘야하는 것같다..

그러므로 데이터베이스를 처음 만들 때 지정해주자.

CREATE DATABASE my_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

그렇지 않으면 migration파일에서 RunSQL 을 사용해서 collation을 바꿔주는 방법도 있다.

처음부터 database를 만들 때 위의 커맨드로 collation을 지정해줬기 때문에 settings.py에는 아래와 같이 설정했다.

django-envrion 패키지를 사용해서 .env file에 설정을 별도로 지정해줬다.

# settings.py

DATABASES = {
    "default": env.db(
        "DATABASE_URL",
        engine="django.db.backends.mysql",
    ),
    "TEST": {"NAME": "private_test_db", "CHARSET": "utf8mb4", "COLLATION": "utf8mb4_general_ci"},
}

# Set the character set
DATABASES["default"]["OPTIONS"] = {"init_command": "SET sql_mode='STRICT_TRANS_TABLES'", "charset": env("charset")}
# .env file

DEBUG=True
SECRET_KEY=my_secret_key # secret key를 설정해주자.
ALLOWED_HOSTS=localhost # allowed host를 설정해주자.

# database settings
DATABASE_URL=mysql://username:password@host/name # name은 database의 name이다.
charset=utf8mb4

Reference

Create a MySQL database with charset UTF-8

How do you change the collation type for a MySQL column?

Django