Establecer el charset
opción a utf8mb4
en las OPTIONS
dict de las DATABASES
configuración en el archivo de configuración de 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
}
}
}
Estas opciones se pasarán como argumentos a la función de conexión del controlador mysql, que normalmente es mysqlclient
. Aquí puedes ver en la documentación todos estos parámetros:
https://mysqlclient.readthedocs.io/user_guide.html#functions-and -atributos
Si usa un controlador diferente sin embargo, para mysql, es posible que necesite una opción diferente.
También asegúrese de que en la base de datos MySQL, el conjunto de caracteres de la columna, la tabla o la base de datos completa esté configurado en utf8mb4
. Para obtener más información sobre juegos de caracteres en MySQL, consulte:
Documentos de MySQL:Especificación de juegos de caracteres y colaciones
Documentos de MySQL:El conjunto de caracteres utf8mb4 (Codificación Unicode UTF-8 de 4 bytes)
Desbordamiento de pila:¿Cuál es la diferencia entre los juegos de caracteres utf8mb4 y utf8 en MySQL?
Por cierto, hay una solicitud de extracción en curso en Django para hacer utf8mb4
el predeterminado:https://github.com/django/django/pull/8886