Lösung für das Problem, dass MySQL-Befehle nicht auf Chinesisch eingegeben werden können

Lösung für das Problem, dass MySQL-Befehle nicht auf Chinesisch eingegeben werden können

Finden Sie das Problem

Als ich mich kürzlich über den MySQL-Befehl mit dem MySQL-Server verband, konnte ich keine chinesischen Schriftzeichen eingeben, wie unten gezeigt:

mysql> SELECT 'Chinesische Zeichen <> werden entfernt';
+------------------------------------+
| Chinesische Zeichen <> werden entfernt |
+------------------------------------+
| Chinesische Zeichen <> werden entfernt |
+------------------------------------+
1 Zeile im Satz (0,00 Sek.)

Alle eingegebenen chinesischen Zeichen werden durch Leerzeichen ersetzt. Der obige Test gilt für die offizielle Version mysql-5.7.32.

Nachdem ich das offizielle MySQL-Änderungsprotokoll 5.7.34 durchgesehen hatte, stellte ich fest, dass Oracles offizielles MySQL 5.7.34 und MySQL 8.0.24 jeweils die folgenden Fehler behoben haben.

Für Builds, die mit der Bibliothek libedit kompiliert wurden, wenn der MySQL-Client aufgerufen wurde
Mit der Option --default-character-set=utf8 lehnte libedit die Eingabe von
Multibyte-Zeichen. (Fehler Nr. 32329078, Fehler Nr. 32583436, Fehler Nr. 102806)

Siehe Bug-102806, der ein ähnliches Problem wie oben beschrieben zeigt. Der interaktive Modus der MySQL-Befehlszeile unterstützt nicht die Eingabe aller Breitzeichen.

Was passiert, wenn ich kein Chinesisch eingeben kann?

Laut Test betrifft dieser Fehler nur den Sitzungsvorgang bei der Verbindung zum MySQL-Server im interaktiven Modus über MySQL-Befehle. Wenn eine Version online ist, die diesen Fehler aufweist, kann beim Bedienen der Tabelle das Problem des Verlusts chinesischer Zeichen auftreten.

Die folgenden Methoden sind nicht betroffen:

1. Jedes Programm stellt über entsprechende Treiber eine Verbindung zur Datenbank her.
2. Der MySQL-Befehl wird im nicht-interaktiven Modus ausgeführt, z. B. mysql -h ... -p.... < /tmp/t.sql

Welche Versionen sind betroffen?

Dieser Fehler wurde in 5.7.34 und 8.0.24 behoben, siehe github-mysql-patch-117fb2. Laut dem Patch hat der Fehler nichts mit der Libedit-Version zu tun, egal ob es sich um RPM, Deb oder die offizielle Build-Version handelt.

Nach unseren Tests sind folgende Versionen betroffen:

5.7.31 ~ 5.7.33
8.0.21 ~ 8.0.23

Hinweis: Andere Releases sind noch nicht klar, und es besteht eine hohe Wahrscheinlichkeit, dass das gleiche Problem auftritt. Releases sind jedoch normalerweise einen Schritt hinter den offiziellen Releases und ihre niedrigeren Versionen können das Problem im Voraus beheben.

Wie man damit umgeht

Die Auswahl der Online-Versionen kann sich auf einige verwendete Versionen konzentrieren, wie beispielsweise die, die ich häufig verwende:

- Percona-Zweig percona-5.6.45
percona-5.7.28
percona-8.0.22

- Offizielle Version mysql-5.6.29
mysql-5.7.28
mysql-8.0.19

Wenn die betroffenen Versionen bereits online im Einsatz sind, können Sie die folgenden Methoden zur Problembehebung verwenden:

Vorübergehende Behandlung

Wenn das Upgrade nicht bequem ist, können Sie zunächst den MySQL-Clientbefehl unter 5.7.30 oder 5.7.34 und höher verwenden.

Kleineres Versionsupgrade

Wenn das Upgrade einer Nebenversion zweckmäßig ist, wird empfohlen, auf die folgende Version zu aktualisieren:

5.7.35
8.0.26

Zusammenfassen

Dies ist das Ende dieses Artikels über das Problem, dass MySQL-Befehle nicht auf Chinesisch eingegeben werden können. Weitere verwandte Inhalte zu MySQL-Befehlen, die nicht auf Chinesisch eingegeben werden können, finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der Kodierungsprobleme bei MySQL-Befehlszeilenoperationen
  • Einführung in die Verwendung von MySQL-Quellbefehlen
  • MySQL häufig verwendete SQL und Befehle vom Eintrag bis zum Löschen der Datenbank und zum Weglaufen
  • Implementierung von MySQL mit dem Befehl mysqlbinlog zum Wiederherstellen versehentlich gelöschter Daten
  • Einführung in Abfragebefehle für gespeicherte MySQL-Prozeduren
  • Drei Methoden zum automatischen Vervollständigen von Befehlen in der MySQL-Datenbank
  • Das MySQL-Passwort enthält Sonderzeichen und den Anmeldevorgang über die Befehlszeile
  • Die Ressourcen und Aktivierungsmethoden des MySQL-Desktoptools SQLyog verabschieden sich von der schwarz-weißen Befehlszeile
  • MySQL-Anmelde- und Beendigungsbefehlsformat
  • So verwenden Sie den MySQL-Autorisierungsbefehl „grant“
  • Zusammenfassung der grundlegenden allgemeinen MySQL-Befehle

<<:  6 Möglichkeiten zur eleganten Handhabung von Objekten in JavaScript

>>:  Detaillierte Erläuterung des Docker-Arbeitsmodus und -Prinzips

Artikel empfehlen

Eine Frage zur Einstellung des Randradius-Werts

Problemdatensatz Heute wollte ich ein kleines Bau...

So installieren Sie Tomcat8 im Docker

1. Installieren Sie Tomcat8 mit Docker 1. Suchen ...

JavaScript-Grundlagenobjekte

Inhaltsverzeichnis 1. Gegenstand 1.1 Was ist ein ...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.21

Notieren Sie die Installations- und Konfiguration...

jQuery implementiert das Bouncing-Ball-Spiel

In diesem Artikel wird der spezifische Code von j...

So verwenden Sie Navicat zum Exportieren und Importieren einer MySQL-Datenbank

MySql ist eine Datenquelle, die wir häufig verwen...

So entwickeln Sie eine Progressive Web App (PWA)

Inhaltsverzeichnis Überblick Erfordern URL der An...

So erstellen, speichern und laden Sie Docker-Images

Es gibt drei Möglichkeiten, ein Image zu erstelle...