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 utf8mb4Schriftzeichen 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 ZeichensatzmethodeIm 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:
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 SystemparameterZunä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-ZeichensatzesWenn 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 FelderEbenso 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ägeDie Ä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:
|
<<: 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
Inhaltsverzeichnis Stabilisierung Drosselung Zusa...
In diesem Artikel finden Sie das MySQL-Installati...
In diesem Artikel wird der spezifische Code von V...
Inhaltsverzeichnis Vorwort 1. So schreiben Sie Fu...
Das mobile Vue-Terminal bestimmt die Richtung, in...
Dieser Artikel basiert auf der Windows 10-Systemu...
Ich habe vor Kurzem Docker gelernt und stoße dabe...
1. Installieren Sie Apache # yum install -y httpd...
Phänomen Starten Sie den Docker-Container docker ...
Hintergrund: Ich habe bereits ein Projekt durchge...
1. Grundlegende Verwendung Es kann über den Mutat...
Unter Bezugnahme auf die Online-Informationen hab...
1Mehrere gängige Zeichensätze Zu den gängigsten Z...
Vorwort Die bei der persönlichen tatsächlichen En...
Ich hatte dieses Problem in letzter Zeit beim Desi...