How to set Collation in MySQL database with Django 2.* mysqlclient?

Question:

I need to set default Collation for MySQL tables with Django 2.*, im using mysqlclient, my settings are:

DATABASES = {   
    'default': {
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': '',
        'USER': '',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'charset': 'utf8mb4',
        },
    }
}

'charset': 'utf8mb4',

This parameter seems don’t work properly and tables in DB utf8. Although i want to manually set and tables Collation to utf8mb4_general_ci

Will be appreciate for any clues.

Asked By: Denis

||

Answers:

'default': {
    'ENGINE': 'django.db.backends.mysql', 
    'NAME': '',
    'USER': '',
    'PASSWORD': '',
    'HOST': 'localhost',
    'PORT': '3306',
    'OPTIONS': {
        'init_command': 'ALTER DATABASE <YOUR_DB_NAME> CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci',
    },
}

Thanks to https://stackoverflow.com/a/6115705/2891421

Answered By: Denis
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': get_env_val('MYSQL_DB_NAME'),
        'USER': get_env_val('MYSQL_DB_USER'),
        'PASSWORD': get_env_val('MYSQL_DB_PASSWORD'),
        'HOST': get_env_val('MYSQL_DB_HOST'),
        'PORT': get_env_val('MYSQL_DB_PORT'),
        'OPTIONS': {
            'charset': 'utf8mb4',
        }
        ,
    }
}
Answered By: PLABON DATTA