Stellen Sie den charset
ein Option zu utf8mb4
in den OPTIONS
dict der DATABASES
Einstellung in der Django-Einstellungsdatei:
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
}
}
}
Diese Optionen werden als Argumente an die mysql-Treiberverbindungsfunktion übergeben, die normalerweise mysqlclient
ist . Hier können Sie in der Dokumentation all diese Parameter sehen:
https://mysqlclient.readthedocs.io/user_guide.html#functions-and -Attribute
Wenn Sie einen anderen Treiber verwenden für mysql benötigen Sie jedoch möglicherweise eine andere Option.
Stellen Sie außerdem sicher, dass in der MySQL-Datenbank der Zeichensatz entweder der Spalte, der Tabelle oder der gesamten Datenbank auf utf8mb4
gesetzt ist . Weitere Informationen zu Zeichensätzen in MySQL finden Sie unter:
MySQL-Dokumentation:Festlegen von Zeichensätzen und Sortierungen
MySQL-Dokumentation:Der utf8mb4-Zeichensatz (4-Byte-UTF-8-Unicode-Codierung)
Stapelüberlauf:Was ist der Unterschied zwischen utf8mb4- und utf8-Zeichensätzen in MySQL?
Es gibt übrigens eine laufende Pull-Anfrage in Django, um utf8mb4
zu machen die Standardeinstellung:https://github.com/django/django/pull/8886