Defina o
charset
opção para utf8mb4
nas OPTIONS
dict dos DATABASES
configuração no arquivo de configurações do 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
}
}
}
Essas opções serão passadas como argumentos para a função de conexão do driver mysql, que normalmente é
mysqlclient
. Aqui você pode ver na documentação todos esses parâmetros:https://mysqlclient.readthedocs.io/user_guide.html#functions-and -atributos
Se você usar um driver diferente para mysql, porém, você pode precisar de uma opção diferente.
Certifique-se também de que no banco de dados MySQL, o conjunto de caracteres da coluna, da tabela ou de todo o banco de dados esteja definido como
utf8mb4
. Para obter mais informações sobre conjuntos de caracteres no MySQL, consulte:Documentos do MySQL:Especificando conjuntos de caracteres e agrupamentos
Documentos do MySQL:O conjunto de caracteres utf8mb4 (Codificação Unicode UTF-8 de 4 bytes)
Stack Overflow:Qual é a diferença entre os conjuntos de caracteres utf8mb4 e utf8 no MySQL?
BTW um pull-request em andamento no Django para fazer
utf8mb4
o padrão:https://github.com/django/django/pull/8886