Erfahren Sie, wie Sie den Fehler beim Speichern chinesischer Schriftzeichen in der MySQL-Datenbank beheben können

Erfahren Sie, wie Sie den Fehler beim Speichern chinesischer Schriftzeichen in der MySQL-Datenbank beheben können

1. Aufgetretene Probleme

Beim Speichern chinesischer Schriftzeichen in der Datenbank ist mir folgendes Problem begegnet:

Ursache: java.sql.SQLException: Falscher Zeichenfolgenwert: '\xE6\x9F\xAF\xE5\x8D\x97' für Spalte 'user_name' in Zeile 1

Bildbeschreibung hier einfügen

2. Analysieren Sie das Problem

Dies liegt an einem Problem mit dem Datenbankdesign. Beim Erstellen der Datenbank wurde der Standard direkt ausgewählt, ohne ihn auf UTF-8 zu ändern. Später habe ich versucht, es manuell zu ändern, aber es hat immer noch nicht funktioniert .

Ich habe versucht, die Standardfelder der Datenbank und Tabelle auf UTF-8 zu ändern, aber chinesische Zeichen können immer noch nicht gespeichert werden.

Bildbeschreibung hier einfügen
Bildbeschreibung hier einfügen

3. Das eigentliche Problem

Bildbeschreibung hier einfügen

Das wirkliche Problem ist, dass Sie beim Öffnen der Tabelleninformationen die Existenz von latin1 sehen können. Das liegt daran, dass wir den Feldtyp auch dann nicht ändern können, wenn wir ihn später manuell ändern. Genau wie oben werden die Tabelleninformationen auch dann nicht geändert, wenn wir ihn ändern. Die wirkliche Lösung ist: 1. Entweder wir erstellen die Datenbank neu und stellen sie beim Erstellen auf utf8 ein (etwas schwierig), 2. Oder die folgende Lösung (nicht so einfach, wenn viele Felder beteiligt sind): Exportieren und ändern Sie die SQL-Anweisung und führen Sie die SQL-Anweisung dann erneut aus.

4. Lösung

Exportieren Sie unsere Datenbank als SQL-Datei:

/*
SQLyog Enterprise v12.08 (64 Bit)
MySQL – 5.7.31: Datenbank – data_test
*********************************************************************
*/


/*!40101 NAMEN FESTLEGEN utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SETZEN @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SETZEN @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
DATENBANK ERSTELLEN /*!32312 WENN NICHT VORHANDEN*/`data_test` /*!40100 STANDARDZEICHENSATZ latin1*/;

VERWENDEN Sie „data_test“;

/*Tabellenstruktur für Tabelle „Benutzer“ */

DROP TABLE, WENN `Benutzer` EXISTIERT;

CREATE TABLE `Benutzer` (
  `user_id` int(11) NICHT NULL AUTO_INCREMENT,
  `user_name` varchar(50) CHARACTER SET latin1 NOT NULL KOMMENTAR 'Konto',
  `Passwort` varchar(50) ZEICHENSATZ latin1 NICHT NULL KOMMENTAR 'Passwort',
  `user_state` varchar(10) CHARACTER SET latin1 NOT NULL DEFAULT '1' COMMENT 'Status, logische Löschung',
  PRIMÄRSCHLÜSSEL (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;

/*Daten für die Tabelle „Benutzer“ */

SPERRT TABELLEN `Benutzer` SCHREIBEN;

in `Benutzer`(`Benutzer-ID`,`Benutzername`,`Passwort`,`Benutzerstatus`) Werte einfügen (1,'keafmd','keafmd','1'),(3,'21312321','123','0'),(11,'213','213','1'),(12,'keafmd','666','0');

TABELLEN ENTSPERREN;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SETZEN SIE FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SETZEN SIE UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

Wie oben erwähnt, haben wir latin1 gefunden, also werden wir alles latin1 durch utf8 ersetzen.

Die ersetzte SQL-Datei:

/*
SQLyog Enterprise v12.08 (64 Bit)
MySQL – 5.7.31: Datenbank – data_test
*********************************************************************
*/


/*!40101 NAMEN FESTLEGEN utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SETZEN @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SETZEN @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
DATENBANK ERSTELLEN /*!32312 WENN NICHT VORHANDEN */`data_test` /*!40100 STANDARDZEICHENSATZ utf8 */;

VERWENDEN Sie „data_test“;

/*Tabellenstruktur für Tabelle „Benutzer“ */

DROP TABLE, WENN `Benutzer` EXISTIERT;

CREATE TABLE `Benutzer` (
  `user_id` int(11) NICHT NULL AUTO_INCREMENT,
  `user_name` varchar(50) CHARACTER SET utf8 NOT NULL KOMMENTAR 'Konto',
  `Passwort` varchar(50) ZEICHENSATZ utf8 NICHT NULL KOMMENTAR 'Passwort',
  `user_state` varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT '1' COMMENT 'Status, logische Löschung',
  PRIMÄRSCHLÜSSEL (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

/*Daten für die Tabelle „Benutzer“ */

SPERRT TABELLEN `Benutzer` SCHREIBEN;

in `Benutzer`(`Benutzer-ID`,`Benutzername`,`Passwort`,`Benutzerstatus`) Werte einfügen (1,'keafmd','keafmd','1'),(3,'21312321','123','0'),(11,'213','213','1'),(12,'keafmd','666','0');

TABELLEN ENTSPERREN;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SETZEN SIE FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SETZEN SIE UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

Wählen Sie SQL-Skript ausführen und wählen Sie die geänderte SQL-Datei aus

Bildbeschreibung hier einfügen

Überprüfen Sie nun die Tabelleninformationen

Bildbeschreibung hier einfügen

Auf diese Weise ist alles UTF8, was das Problem im Grunde löst.

5. Lösungseffekt

Testen Sie, ob das Problem wirklich gelöst ist:

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Damit ist dieser Artikel über MySQL-Grundlagen – So beheben Sie Fehler beim Speichern chinesischer Zeichen in der Datenbank – abgeschlossen. Weitere Informationen zum Beheben von Fehlern beim Speichern chinesischer Zeichen in der Datenbank finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Lösen Sie das Problem des MySQL-Datenverlusts, wenn Docker Redis neu startet
  • Lösung für das Problem des Datenverlusts bei Verwendung der Ersetzungsoperation in MySQL
  • Mehrere Lösungen zur Vermeidung von MySQL-Datenverlust bei einem Serverausfall
  • Warum der Speicherplatz nach dem Löschen von Daten in MySQL nicht freigegeben wird
  • Python-Grundlagen: Bedienung einer MySQL-Datenbank
  • Django speichert Bilder in der MySQL-Datenbank und zeigt sie auf der Front-End-Seite an
  • MyBatis Batch-Einfügen/Ändern/Löschen von MySql-Daten
  • Implementierungscode zum Speichern von Bildern in der MySQL-Datenbank und deren Anzeige auf der Front-End-Seite
  • Zusammenfassung der MySQL-Datenmigration
  • Golang implementiert die Übermittlung und das Rollback von MySQL-Datenbanktransaktionen
  • Detaillierte Erläuterung der Rolle der Standarddatenbank nach der MySQL-Installation
  • Ursachen und Lösungen für MySQL-Datenverlust

<<:  Erfahren Sie, wie Sie die Selbstüberwachung von Apache SkyWalking schnell aktivieren

>>:  Erfahren Sie mehr über das V-Modell und seine Modifikatoren in einem Artikel

Artikel empfehlen

Docker Compose-Installationsmethoden in verschiedenen Umgebungen

1. Online-Installation Derzeit habe ich nur die O...

JavaScript zum Implementieren einer zeitlich begrenzten Flash-Sale-Funktion

In diesem Artikel wird der spezifische JavaScript...

Detaillierte Erklärung zum Bereitstellen von H5-Spielen auf einem Nginx-Server

Auf dem Weg zur selbstlernenden Spieleentwicklung...

So installieren Sie Mysql5.7 in Centos6

Umfeld Centos 6.6 MySQL 5.7 Installieren Falls da...

Eine kurze Einführung in den MySQL-Dialekt

Wenn wir einmal von Datenbanken absehen, was ist ...

Ein einfaches Beispiel für die MySQL-Suche nach Daten im Umkreis von N Kilometern

Gemäß dem Koeffizienten von Pi und dem Radius der...

Detaillierte Schritte zur Verwendung von AES.js in Vue

Verwendung der AES-Verschlüsselung Verschlüsselun...

Detaillierte Erläuterung des Mysql Self-Join-Abfragebeispiels

Dieser Artikel beschreibt die Mysql-Self-Join-Abf...

Prinzipielle Beispiele für die vier Netzwerktypen von Docker

Vier Netzwerktypen: Keine: Konfigurieren Sie kein...