Praktisches Tutorial zum Ändern des MySQL-Zeichensatzes

Praktisches Tutorial zum Ändern des MySQL-Zeichensatzes

Vorwort:

In MySQL unterstützt das System viele Zeichensätze und es gibt leichte Unterschiede zwischen den verschiedenen Zeichensätzen. Die derzeit am häufigsten verwendeten Zeichensätze dürften utf8 und utf8mb4 sein. Im Vergleich zu utf8 unterstützt utf8mb4 die Speicherung von Emoji-Ausdrücken und hat ein breiteres Anwendungsspektrum. Dieser Artikel erläutert, wie Sie den Zeichensatz UTF8 in UTF8MB4 ändern.

1. Einführung in die Zeichensätze utf8 und utf8mb4

Schriftzeichen ist ein allgemeiner Begriff für verschiedene Texte und Symbole, darunter auch nationale Texte, Satzzeichen, grafische Symbole, Zahlen usw. Ein Zeichensatz ist eine Sammlung mehrerer Zeichen.

Zeichensätze in MySQL können auf vier Ebenen verwendet werden: Serverebene, Datenbankebene, Tabellenebene und Spaltenebene. Die Vergleichsregeln auf Serverebene werden durch den Parameter character_set_server gesteuert. Wird beim Anlegen einer Datenbank, Tabelle oder Spalte kein Zeichensatz explizit angegeben, wird der Zeichensatz der vorherigen Ebene übernommen.

Der Standardzeichensatz für MySQL 5.7 und frühere Versionen ist latin1, und der Standardzeichensatz für MySQL 8.0 ist utf8mb4. Allerdings kann die Verwendung von Latin1 leicht zu verstümmelten Zeichen führen, daher werden UTF-8 und UTF-8MB4 am häufigsten verwendet. utf8 ist eigentlich ein Alias ​​für utf8mb3, das nur 1 bis 3 Bytes zur Darstellung von Zeichen verwendet. utf8mb4 verwendet 1 bis 4 Bytes zur Darstellung von Zeichen und kann mehr Emoji-Ausdrücke und alle neuen Unicode-Zeichen speichern. utf8mb4 ist mit utf8 kompatibel und kann mehr Zeichen darstellen als utf8. Es ist eine Obermenge des utf8-Zeichensatzes. Daher empfehlen einige neue Unternehmen jetzt, den Datenbankzeichensatz auf utf8mb4 einzustellen, insbesondere wenn Emoticons gespeichert werden müssen.

2. Ändern Sie die Zeichensatzmethode

Im aktuellen Internetgeschäft besteht ein steigender Bedarf an Emoji-Speicher. Spitznamen und Kommentare müssen beispielsweise Emojis unterstützen. Wenn das Datenbankfeld zu diesem Zeitpunkt den UTF-8-Zeichensatz verwendet, wird der folgende Fehler gemeldet:

java.sql.SQLException: Falscher String-Wert: '\xF0\x9F\x92\x95\xF0\x9F...' für Spalte…………

Um geschäftliche Anforderungen zu erfüllen, müssen wir den Datenbankzeichensatz auf utf8mb4 ändern. Glücklicherweise ist utf8mb4 eine Obermenge von utf8, sodass keine weitere Konvertierung erforderlich ist, außer die Änderung der Kodierung auf utf8mb4. Hier ist eine kurze Beschreibung der Änderungsmethode.

Änderung der Systemparameter

Zunächst sollten Sie die Systemzeichensatzparameter so ändern, dass der Standardzeichensatz für die zukünftig erstellten Datenbanktabellen utf8mb4 ist. Suchen Sie die Konfigurationsdatei und fügen Sie die folgenden Parameter hinzu oder ändern Sie sie:

vi /etc/meine.cnf

[mysqld]
Zeichensatzserver = utf8mb4
Sortierserver = utf8mb4_general_ci
Zeichensatz-Client-Handshake überspringen
#Ignorieren Sie die durch die Anwendungsverbindung festgelegte Zeichenkodierung und halten Sie sie mit der globalen Einstellung [Client] konsistent.
Standardzeichensatz = utf8mb4
[mysql]
Standardzeichensatz = utf8mb4

Ändern des Datenbank-Zeichensatzes

Wenn der ursprüngliche Zeichensatz für eine bereits erstellte Datenbank UTF-8 ist, können Sie ihn wie folgt ändern:

# Legen Sie die Datenbank-Zeichensatzkodierung fest ALTER DATABASE `dbname` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

# Beispielmysql> show create database testdb;
+----------+-----------------------------------------------------------------+
| Datenbank | Datenbank erstellen |
+----------+-----------------------------------------------------------------+
| testdb | DATENBANK `testdb` ERSTELLEN /*!40100 STANDARDZEICHENSATZ utf8 */ |
+----------+-----------------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

mysql> Datenbank „testdb“ ändern. Zeichensatz utf8mb4. Sortierung utf8mb4_general_ci;
Abfrage OK, 1 Zeile betroffen (0,01 Sek.)

mysql> anzeigen, Datenbank testdb erstellen;
+----------+---------------------------------------------------------+
| Datenbank | Datenbank erstellen |
+----------+---------------------------------------------------------+
| testdb | DATENBANK `testdb` ERSTELLEN /*!40100 STANDARDZEICHENSATZ utf8mb4 */ |
+----------+---------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

Ändern des Zeichensatzes für Tabellen und Felder

Ebenso hat das Ändern der globalen und Datenbank-Zeichensätze bei bereits erstellten Tabellen keine Auswirkungen auf die Zeichensätze der ursprünglichen Tabellen und Felder. Die ursprüngliche UTF-8-Tabelle kann wie folgt geändert werden:

# Ändern Sie den Zeichensatz der Tabelle. Alter Table „tb_name“ Standardzeichensatz utf8mb4;

# Den Zeichensatz eines Feldes ändern. alter table `tb_name` modify col_name varchar(20) character set utf8mb4;

# Ändern Sie gleichzeitig den Zeichensatz der Tabelle und des Felds. alter table `tb_name` IN ZEICHENSATZ KONVERTIEREN utf8mb4 COLLATE utf8mb4_general_ci;

# Wenn eine Datenbank viele Tabellen enthält, können Sie die auszuführenden Batch-Änderungsanweisungen zusammenfügen SELECT
 CONCAT( 'ALTER TABLE ', TABLE_NAME, ' IN ZEICHENSATZ utf8mb4 KONVERTIEREN, COLLATE utf8mb4_general_ci;' ) 
AUS
 information_schema.`TABELLEN` 
WO
 TABLE_SCHEMA = "testdb";

3. Einige Vorschläge

Die Änderungsmethode scheint einfach, Sie müssen in der Produktionsumgebung jedoch dennoch besonders vorsichtig sein. Insbesondere beim Ändern des Feldzeichensatzes wird eine Sperre hinzugefügt, um Schreibvorgänge zu verhindern. Dies ist auch bei großen Tabellen sehr langsam und kann das Online-Geschäft beeinträchtigen.

Wenn Ihre Datenbank relativ klein ist, sollte die obige Methode kein Problem darstellen. Wenn Sie in einer Online-Umgebung den Zeichensatz ändern möchten, müssen Sie dies sorgfältig abwägen. Am besten fahren Sie das System außerhalb der Hauptgeschäftszeiten herunter, um Änderungen vorzunehmen, und führen Sie vor der Änderung unbedingt eine Sicherungskopie durch. Wenn keine Ausfallzeiten auftreten, können Sie zunächst Änderungen an der Sicherungsdatenbank vornehmen und dann zwischen der primären und der Sicherungsdatenbank wechseln. Dies ist jedoch mit mehr Problemen verbunden.

Wenn die Bedingungen es erlauben, können Sie auch eine leere Instanz vorbereiten, zuerst die Tabellenstruktur importieren, sie in den Zeichensatz utf8mb4 ändern und dann die Daten importieren. Dies ist auch eine Methode, die jedoch möglicherweise auch Ausfallzeiten und Umschaltungen erfordert.

Oben finden Sie Einzelheiten zum Ändern des Zeichensatzes in MySQL. Weitere Informationen zum Ändern des Zeichensatzes in MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Gemeinsame Nutzung von MySQL-Zeichensatz und Änderungsmethoden für die Datenbank-Engine
  • Tutorial zum Anzeigen und Ändern von MySQL-Zeichensätzen
  • MySQL-Startfehler 1067 und ungültige Wiederherstellung nach Änderung des Zeichensatzes und Neustart
  • So ändern Sie die Zeichensatzkodierung in MySQL 5.5/5.6 unter Linux auf UTF8
  • Vergleich der von der MySQL-Datenbank unterstützten Speicher-Engines
  • Implementieren Sie eine einfache Suchmaschine auf Basis von MySQL
  • Unterschiede und Vergleiche von Speicher-Engines in MySQL
  • MySQL-Lernzusammenfassung: Ein vorläufiges Verständnis des Architekturdesigns der InnoDB-Speicher-Engine
  • MySQL ändert die Standard-Engine und Zeichensatzdetails

<<:  Lösen Sie das Problem, dass Nginx nach der Konfiguration von proxy_pass 404 zurückgibt

>>:  Detaillierte Erklärung der neuen CSS-Eigenschaft display:box

Artikel empfehlen

Erläuterung zu JavaScript-Anti-Shake und -Throttling

Inhaltsverzeichnis Stabilisierung Drosselung Zusa...

Tutorial zur Installation und Konfiguration von MySQL für Mac

In diesem Artikel finden Sie das MySQL-Installati...

Vue implementiert Drag & Drop oder Klicken zum Hochladen von Bildern

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

Schreiben und Verstehen von Pfeilfunktionen und diesem in JS

Inhaltsverzeichnis Vorwort 1. So schreiben Sie Fu...

Beispiel für die Verwendung der setInterval-Funktion in React

Dieser Artikel basiert auf der Windows 10-Systemu...

Durchführung der lokalen Migration von Docker-Images

Ich habe vor Kurzem Docker gelernt und stoße dabe...

CentOS7-Bereitstellung Flask (Apache, mod_wsgi, Python36, venv)

1. Installieren Sie Apache # yum install -y httpd...

Details zur Überwachung von DOM-Elementen durch MutationObServer in JavaScript

1. Grundlegende Verwendung Es kann über den Mutat...

CentOS6.8 verwendet cmake zur Installation von MySQL5.7.18

Unter Bezugnahme auf die Online-Informationen hab...

Detaillierte Erklärung der Zeichensätze und Validierungsregeln in MySQL

1Mehrere gängige Zeichensätze Zu den gängigsten Z...

Vue implementiert Beispielcode für Links- und Rechtsgleiteffekte

Vorwort Die bei der persönlichen tatsächlichen En...