Задайте charset
опция за utf8mb4
в OPTIONS
dict на DATABASES
настройка във файла с настройки на Django:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'my_db',
'USER': 'my_user',
'PASSWORD': 'my_pass',
'HOST': 'my.host',
'OPTIONS': {
'charset': 'utf8mb4' # This is the important line
}
}
}
Тези опции ще бъдат предадени като аргументи на функцията за свързване на драйвера mysql, която обикновено е mysqlclient
. Тук можете да видите в документацията всички тези параметри:
https://mysqlclient.readthedocs.io/user_guide.html#functions-and - атрибути
Ако използвате различен драйвер за mysql обаче може да се нуждаете от друга опция.
Също така се уверете, че в базата данни MySQL наборът от знаци на колоната, таблицата или цялата база данни е зададен на utf8mb4
. За повече информация относно наборите от символи в MySQL вижте:
MySQL документи:Указване на набори от символи и съпоставяне
Документи на MySQL:Наборът от символи utf8mb4 (4-байтово UTF-8 Unicode кодиране)
Препълване на стека:Каква е разликата между utf8mb4 и utf8 набори знаци в MySQL?
Между другото, има текуща заявка за изтегляне в Django, за да се направи utf8mb4
по подразбиране:https://github.com/django/django/pull/8886