Conversion de la base de données en UTF8MB4

Introduction

UTF8MB4 est une extension du format de codage de caractères UTF-8. Le format UTF-8 original utilise un nombre variable d’octets pour représenter les caractères Unicode. Cependant, il ne prend en charge que les caractères de la norme Unicode d’origine, qui comptait un maximum de 65 536 caractères.

Conversion de la base de données

Assurez-vous que :

  • Le fichier my.cnf/my.ini correspond à celui spécifié dans le guide d’installation de Relution pour votre système d’exploitation. pour votre système d’exploitation.
  • Une base de données existe.
  • La base de données a les permissions correctes.

Pour mettre à jour :

  1. arrêter le service Relution.
  2. Exécutez cette requête sur la base de données.
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 ;

Cette opération génère un script SQL qui peut être utilisé pour migrer la base de données. base de données.
3. copier le résultat de la requête et l’exécuter en tant que nouvelle requête SQL 4. s’assurer que les tables ont les spécifications modifiées suivantes modifiées suivantes : - Row Format = Compressed - File Format = Barracuda - Table collation = utf8mb4_general_ci.