DB Konvertierung zu UTF8MB4
Auf dieser Seite
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.
Wird diese Anleitung als PDF-Datei betrachtet, kann es sein, dass Anführungszeichen durch ihre typografischen, d.h. geschweiften Versionen ersetzt wurden. Dadurch wird die Syntax des Skripts falsch. Sicherstellen, dass die Markdown- oder HTML-Version dieses Dokuments verwendet wird.
Konvertierung der DB
Sicherstellen, dass:
- Die
my.cnf/my.inimit der in der Relution-Installationsanleitung für das jeweilige Betriebssystem angegebenen übereinstimmt. - Eine Datenbank existiert.
- Die Datenbank die richtigen Berechtigungen hat.
Zum Update:
- Den Relution-Dienst stoppen.
- Diese Query auf der Datenbank ausführen.
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.
- Das Ergebnis der Abfrage kopieren und als neue SQL-Abfrage ausführen.
- Sicherstellen, dass die Tabellen die folgenden geänderten
Angaben haben:
- Row Format = Compressed
- File Format = Barracuda
- Table collation = utf8mb4_general_ci.