DB Konvertierung zu UTF8MB4

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.

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:

  1. Stoppen Sie den Relution Dienst.
  2. 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.

  1. Kopieren Sie das Ergebnis der Abfrage und führen Sie es als neue SQL-Abfrage aus.
  2. Stellen Sie sicher, dass die Tabellen die folgenden geänderten Angaben haben:
    • Row Format = Compressed
    • File Format = Barracuda
    • Table collation = utf8mb4_general_ci.