Я обнаружил странную проблему с моим проектом 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.
Есть какие-нибудь подсказки?