Django mysql соединение с опциями из файла read_default_file без учета кодировки - PullRequest
0 голосов
/ 20 февраля 2020

Я обнаружил странную проблему с моим проектом Django 1.11 / mysql.

Если я укажу указанную кодировку c в разделе OPTIONS настроек DATABASES, соединение db будет создано правильно. Если я передаю ОПЦИИ соединения из файла с файлом «read_default_file», соединение работает, но кодировка является стандартной, а не той, которую я указал.

Рабочий пример:

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

Результат печати connection.get_character_set_info():

{'name': 'utf8mb4', 'collation': 'utf8mb4_0900_ai_ci', 'comment': 'UTF-8 Unicode', 'mbminlen': 1, 'mbmaxlen': 4}

НЕ рабочий пример:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': os.path.join(SECRET_DIR, 'mysql.cnf'),
        },
    },
}

mysql .cnf :

[client]
database = test
user = test
password = test
default-character-set = utf8mb4

Результат печати connection.get_character_set_info():

{'name': 'utf8', 'collation': 'utf8_general_ci', 'comment': 'UTF-8 Unicode', 'mbminlen': 1, 'mbmaxlen': 3}

Я также попытался запустить клиент mysql из оболочки с флагом --defaults-file, передав его так же mysql .cnf: кодировка верна, так что, вероятно, что-то связано с Django.

Есть какие-нибудь подсказки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...