DB Konvertierung zu UTF8MB4
Auf dieser Seite
Einleitung
UTF8MB4 ist eine Erweiterung des UTF-8-Zeichencodierungsformats. Das ursprüngliche UTF-8-Format verwendet eine variable Anzahl von Bytes, um Unicode-Zeichen darzustellen. Es unterstützt jedoch nur die Zeichen des ursprünglichen Unicode-Standards, der maximal 65.536 Zeichen umfasste.
Wenn Sie diese Anleitung als PDF Datei betrachten, kann es sein, dass Anführungszeichen durch ihre typografischen d.h. geschweiften Versionen ersetzt wurden. Dadurch wird die Syntax des Skripts falsch. Bitte stellen Sie, sicher dass Sie die Markdown- oder HTML-Version dieses Dokuments verwenden.
Konvertierung der DB
Stellen Sie sicher, dass:
- Die
my.cnf
/my.ini
mit der in der Relution Installationsanleitung angegebenen für Ihr Betriebssystem überein stimmt. - Eine Datenbank existiert.
- Die Datenbank die richtigen Berechtigungen hat.
Zum Update:
- Stoppen Sie den Relution Dienst.
- Führen Sie diese Query auf der Datenbank aus.
USE information_schema;
SELECT "SET SESSION innodb_strict_mode=OFF, NAMES 'utf8mb4' COLLATE 'utf8mb4_general_ci';" as _sql
UNION
SELECT concat("SET foreign_key_checks = 0;") as _sql
UNION
SELECT concat("ALTER DATABASE `",table_schema,"` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;") as _sql FROM `TABLES` where table_schema like "relution" group by table_schema
UNION
SELECT concat("ALTER TABLE `",table_schema,"`.`",table_name,"` ENGINE=InnoDB ROW_FORMAT=COMPRESSED;") as _sql
FROM `TABLES` where table_schema like "relution" group by table_schema, table_name
UNION
SELECT concat("ALTER TABLE `",table_schema,"`.`",table_name,"` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") as _sql
FROM `TABLES` where table_schema like "relution" group by table_schema, table_name
UNION
SELECT concat("ALTER TABLE `",table_schema,"`.`",table_name, "` CHANGE `",column_name,"` `",column_name,"` ",data_type,"(",character_maximum_length,") CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") as _sql
FROM `COLUMNS` where table_schema like "relution" and data_type in ('varchar')
UNION
SELECT concat("ALTER TABLE `",table_schema,"`.`",table_name, "` CHANGE `",column_name,"` `",column_name,"` ",data_type," CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;") as _sql
FROM `COLUMNS` where table_schema like "relution" and data_type in ('text','tinytext','mediumtext','longtext')
UNION
SELECT concat("SET foreign_key_checks = 1;") as _sql;
Dadurch wird ein SQL-Skript generiert, das für die Migration der Datenbank verwendet werden kann.
- Kopieren Sie das Ergebnis der Abfrage und führen Sie es als neue SQL-Abfrage aus.
- Stellen Sie sicher, dass die Tabellen die folgenden geänderten
Angaben haben:
- Row Format = Compressed
- File Format = Barracuda
- Table collation = utf8mb4_general_ci.