Django Недопустимое сочетание сопоставлений для таблицы MySQL utf8mb4

Я рассмотрел другие вопросы, связанные с этой темой, такие как ошибка сопоставления django python

Однако в решениях говорится, что для кодирования таблицы используется кодировка utf8. Это неподходящее решение для нашего современного приложения Django, работающего в базе данных с кодировкой utf8mb4.

В моем случае мне нужно применить кодировку или сопоставление в сгенерированном Django запросе или в самой БД, когда передаются символы utf-8 (из вызова model.objects.get_or_create(), я полагаю, что символ emoji передается в одном поля kwargs.)

Я получаю эту ошибку:

django.db.utils.OperationalError: (1267, «Недопустимое сочетание сопоставлений (utf8mb4_unicode_ci, IMPLICIT) и (utf8_general_ci, COERCIBLE) для операции '='")

Приветствуются любые советы. Спасибо!


person Steven Moseley    schedule 17.04.2020    source источник


Ответы (1)


В файле shared_settings.py попробуйте следующее:

DATABASES = {
    "default": {
        "NAME": "DBNAME",
        "ENGINE": "django.db.backends.mysql",
        ...
        "OPTIONS": {"charset": "utf8mb4"}
        # ^ Set the options
    }
}
person Dekel    schedule 17.04.2020