Heim >Datenbank >MySQL-Tutorial >Wie behebe ich den MySQL-Fehler „Falscher String-Wert' beim Speichern von Unicode-Strings in Django?

Wie behebe ich den MySQL-Fehler „Falscher String-Wert' beim Speichern von Unicode-Strings in Django?

Susan Sarandon
Susan SarandonOriginal
2024-11-27 08:48:14246Durchsuche

How to Fix MySQL's

Fehlerbehebung beim MySQL-Fehler „Falscher String-Wert“ für Unicode-Strings in Django

Beim Versuch, Unicode-Strings in MySQL mit Django zu speichern, wird möglicherweise die Fehlermeldung „ Falscher Zeichenfolgenwert.“ Dieses Problem entsteht aufgrund der Beschränkung der Größe von Unicode-Zeichen im utf-8-Zeichensatz durch MySQL.

Ursache

Der utf-8-Zeichensatz von MySQL unterstützt maximal 3 Bytes pro Zeichen. Bestimmte Unicode-Zeichen erfordern jedoch 4 Bytes oder mehr. Wenn solche Zeichen gespeichert werden, löst MySQL den Fehler „Falscher Zeichenfolgenwert“ aus.

Lösung

Um dieses Problem zu beheben, müssen Sie die folgenden Schritte ausführen:

  1. Upgrade von MySQL auf 5.5 oder höher: MySQL-Versionen 5.5 und höher unterstützen den Zeichensatz utf8mb4, der damit umgehen kann 4-Byte-Unicode-Zeichen.
  2. Datenbank, Tabelle und Spalten in utf8mb4 konvertieren:Ändern Sie Ihre MySQL-Datenbank, Tabellen und Spalten, um den Zeichensatz utf8mb4 zu verwenden.
  3. Konfigurieren Sie Django für die Verwendung von utf8mb4: Geben Sie die Option „charset“ an Djangos Datei „settings.py“ in „utf8mb4“.
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}

Zusätzliche Überlegungen

  • Wenn bei der Datenbankerstellung der Fehler „Angegebener Schlüssel war zu lang“ auftritt, reduzieren Sie ihn die maximale Länge von CharFields mit Indizes um 33 %.
  • Alternativ können Sie Ihre MySQL-Konfiguration bearbeiten um die Längenbeschränkung aufzuheben. Dies erfordert jedoch zusätzliche Django-Änderungen.

PostgreSQL-Kompatibilität

PostgreSQL unterstützt im Gegensatz zu MySQL das Speichern von 4-Byte-Unicode-Zeichen im utf8-Zeichensatz. Daher können Sie zu PostgreSQL wechseln, da dies eine geeignetere Option für die Verarbeitung von Unicode-Zeichenfolgen mit längeren Zeichenlängen ist.

Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler „Falscher String-Wert' beim Speichern von Unicode-Strings in Django?. 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