Heim >Datenbank >MySQL-Tutorial >Wie behebt man Fehler beim Speichern von Unicode-Strings in MySQL mit Django durch „falsche String-Werte'?

Wie behebt man Fehler beim Speichern von Unicode-Strings in MySQL mit Django durch „falsche String-Werte'?

DDD
DDDOriginal
2024-12-15 10:54:12681Durchsuche

How to Fix

Fehler wegen falschem String-Wert beim Speichern von Unicode-Strings in MySQL

Beim Versuch, Unicode-Strings im auth_user-Modell von Django zu speichern, wird ein „falscher String-Wert“ angezeigt „Es kann ein Fehler auftreten. Dies liegt daran, dass MySQL eine 3-Byte-Beschränkung für UTF-8-Zeichen hat, während einige Unicode-Zeichen 4 Bytes erfordern.

Ursache:

Der Fehler tritt auf, weil MySQL Aufgrund seines Bytes können bestimmte Unicode-Zeichen nicht gespeichert werden Einschränkungen.

Lösung:

So beheben Sie dieses Problem:

  1. Verwenden Sie den Zeichensatz utf8mb4: Aktualisieren Sie MySQL auf Version 5.5 oder höher, und ändern Sie dann Ihre Datenbank, Tabelle und Spalten, um das Zeichen utf8mb4 zu verwenden set.
  2. Zeichensatz in Django angeben: Fügen Sie in Ihrer Django-Einstellungsdatei die folgende Option hinzu, um den utf8mb4-Zeichensatz anzugeben:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}
  1. CharField-Länge reduzieren: Wenn das Problem „Angegebener Schlüssel war zu lang“ auftritt, Reduzieren Sie die maximale Länge von CharFields mit Indizes um etwa 33 %. Ändern Sie beispielsweise von 255 auf 191.

Alternativen:

  • Wechseln Sie zu PostgreSQL: PostgreSQL unterstützt 4 Byte Unicode-Zeichen ohne Einschränkungen.
  • MySQL ändern Konfiguration:Bearbeiten Sie die MySQL-Konfiguration, um die Bytebeschränkung zu entfernen. Beachten Sie jedoch, dass hierfür möglicherweise zusätzliche Django-Änderungen erforderlich sind.

Es ist wichtig zu beachten, dass Sie sich beim Wechsel zu utf8mb4 bewusst sein müssen potenzieller Kompatibilitätsprobleme mit älteren Versionen von MySQL oder anderen Anwendungen, die das 4-Byte-Limit möglicherweise nicht unterstützen.

Das obige ist der detaillierte Inhalt vonWie behebt man Fehler beim Speichern von Unicode-Strings in MySQL mit Django durch „falsche String-Werte'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn