Analyse de l'échec d'insertion de caractères inhabituel / problème de mort fausse sous MySQL UTF8 encodage / échec des données de synchronisation ETL

1. Description du problème

Le processus ETL a échoué et les données de MySQL ont été synchronisées avec la base de données MySQL sur un autre serveur. La synchronisation des données a échoué en raison de l'analyse de mots rares.

La bonne chose est que le mot indiqué par la flèche ci-dessus a causé l'échec d'ETL. Que dois-je faire?

Deuxièmement, l'analyse des causes

       Le caractère Unicode maximal qui peut être codé par l'UTF-8 à trois octets est 0xffff, qui est le plan multilingue de base (BMP) en Unicode. En d'autres termes, tous les caractères Unicode qui ne sont pas dans le plan multi-texte de base ne peuvent pas être stockés dans le jeu de caractères utf8 de Mysql. Y compris les  expressions Emoji (Emoji est un encodage Unicode spécial, couramment trouvé sur les téléphones iOS et Android), de nombreux caractères chinois rarement utilisés et tout nouveau caractère Unicode, etc.

     utf8 est un jeu de caractères dans Mysql, qui ne prend en charge que les caractères UTF-8 jusqu'à trois octets, qui est le plan multi-texte de base en Unicode.

     Pour enregistrer des caractères UTF-8 de 4 octets dans Mysql, vous devez utiliser le jeu de caractères utf8mb4, mais il n'est pris en charge qu'après la version 5.5.3 (vérifiez la version: sélectionnez la version ();). Je pense que pour obtenir une meilleure compatibilité, vous devez toujours utiliser utf8mb4 au lieu de utf8. Pour les données de type CHAR, utf8mb4 consommera plus d'espace. Selon la recommandation officielle de Mysql, utilisez VARCHAR au lieu de CHAR.

Trois, la solution

3.1. Modifier directement le jeu de caractères du tableau

​
-- 修改数据库的
alter database test character set = utfmb4;

​-- 修改表的字符集
alter table test convert to character set utf8mb4

3.2.1. Modifier la configuration par défaut de la base de données

[client]
default-character-set = utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4

 

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_35995514/article/details/109560474
conseillé
Classement