So gehen Sie mit dem Fehler beim Einfügen seltener Zeichen in MySQL um (falscher Zeichenfolgenwert)

So gehen Sie mit dem Fehler beim Einfügen seltener Zeichen in MySQL um (falscher Zeichenfolgenwert)

Kürzlich wurde auf Unternehmensseite gemeldet, dass einige Benutzerinformationen nicht eingefügt werden konnten. Die Fehlermeldung war ähnlich wie „Falscher Zeichenfolgenwert: „\xF0\xA5…“. Aus dieser Meldung geht hervor, dass der Fehler wahrscheinlich dadurch verursacht wird, dass der Zeichensatz ein bestimmtes, nicht übliches Zeichen nicht unterstützt.

Hier ist das in der virtuellen Maschine reproduzierte Szenario:

Schritt 1, simulieren Sie die ursprüngliche Zeichensatzumgebung der Tabellenstruktur:

Test verwenden;
TABELLE ERSTELLEN `t1` (
 `id` int(10) NICHT NULL AUTO_INCREMENT,
 `real_name` varchar(255) ZEICHENSATZ utf8 STANDARD '' KOMMENTAR 'Name',
 `nick` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT 'Spitzname',
 PRIMÄRSCHLÜSSEL (`id`)
) ENGINE=InnoDBAUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Mitgliedskarte';

Schritt 2, seltene Wörter einfügen (mithilfe der SQLYog-Simulation):

1. Simulieren Sie zunächst die Online-Umgebung und legen Sie den Zeichensatz fest:

wKiom1kUGECCXdKDAAAV9L1hpEY173.png

2. Fügen Sie seltene Zeichen ein (für seltene Zeichen siehe: http://www.qqxiuzi.cn/zh/hanzi-unicode-bianma.php?zfj=kzb&ks=24E20&js=257E3)

wKioL1kUGEHCtaAvAABxJXp_7Ow741.png

Wir versuchen Wang einzufügen (in Word ALT gedrückt halten und 152964 eingeben). Sie können sehen, dass das Einfügen fehlgeschlagen ist.

Schritt 3. Ändern Sie den Zeichensatz von real_name:

Test verwenden;

alter table t1 change real_name real_name varchar(255) CHARACTER SET utf8mb4 DEFAULT '' KOMMENTAR 'Name';

Handelt es sich um eine große Online-Tabelle, kann diese mit pt-osc bearbeitet werden. Der Befehl lautet:

pt-online-schema-change -uroot -h localhost --alter=" realen Namen ändern realen Namen varchar(255) ZEICHENSATZ utf8mb4 STANDARD '' KOMMENTAR 'Name' " D=test, t=t1 --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --quiet --charset=utf8mb4 --dry-run
pt-online-schema-change -uroot -h localhost --alter=" realen Namen ändern realen Namen varchar(255) ZEICHENSATZ utf8mb4 STANDARD '' KOMMENTAR 'Name' " D=test, t=t1 --no-check-replication-filters --alter-foreign-keys-method=auto --recursion-method=none --quiet --charset=utf8mb4 --execute

Schritt 4, fügen Sie das Experiment erneut ein:

1. Stellen Sie zuerst den Zeichensatz ein:

wKiom1kUGECCXdKDAAAV9L1hpEY173.png

2. Fügen Sie es erneut ein. Sie können sehen, dass das Einfügen erfolgreich war.

wKioL1kUGILTLvpxAAAdWKxKR5A899.png

Die Befehlszeilenabfrage enthält keinen unleserlichen Code:

wKiom1kUGIPyeykFAAAiRzDqNxs956.png

Das ist alles, Sie können darauf zurückgreifen.

Das könnte Sie auch interessieren:
  • Lösung für die Fehlermeldung "java.sql.SQLException: Incorrect string value:'\xF0\x9F\x92\xA9\x0D\x0A...'" beim Speichern von Emoticons in MySQL
  • MySQL löst bei der Ausnahmeanalyse einen falschen Zeichenfolgenwert aus
  • MySql-Fehler: Falscher Zeichenfolgenwert für Spalte
  • Lösung für falsche Zeichenfolgenwerte in MySQL

<<:  Ein vollständiges Beispiel für die Implementierung eines zeitgesteuerten Crawlers mit Nodejs

>>:  Bereitstellungsdokument für die Sicherheitseinstellungen des Win2008-Servers (empfohlen)

Artikel empfehlen

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.17

Dieser Artikel enthält das grafische Tutorial zur...

Was ist eine HTML-Datei? So öffnen Sie eine HTML-Datei

HTML steht für Hypertext Markup Language. Heutzut...

Verwendung von Kubernetes YAML-Dateien

Inhaltsverzeichnis 01 Einführung in YAML-Dateien ...

Eine kurze Diskussion über die Rolle von Vue3 defineComponent

Inhaltsverzeichnis defineComponent-Überladungsfun...

Beispielcode zur Implementierung eines zufälligen Roll Callers in HTML

Nachdem dieses Namensaufrufgerät mit dem Aufruf d...

Das Front-End muss wissen, wie Bilder verzögert geladen werden (drei Methoden)

Inhaltsverzeichnis 1. Was ist Lazy Loading? 2. Im...

InnoDB-Typ MySql stellt Tabellenstruktur und Daten wieder her

Voraussetzung: Speichern Sie die .frm- und .ibd-D...

vue+echarts realisiert den Flusseffekt der China-Karte (detaillierte Schritte)

@vue+echarts realisiert den Flusseffekt der China...