2017-01-03 1 views
0

Tant que toutes les tables de ma base de données ne sont pas migrées vers utf8mb4, existe-t-il un risque de continuer à utiliser une connexion utf8?Puis-je utiliser en toute sécurité une connexion utf8 avec des colonnes utf8mb4?

Je pensais garder la connexion utf8 jusqu'à ce que toutes les tables soient migrées.

La question sous-jacente est la suivante: combien de temps faudra-t-il pour effectuer des modifications sur de très grandes tables (des centaines de Go)?

Répondre

0

Tant que toutes les données se trouvent dans le sous-ensemble utf8 de 3 octets, utf8 et utf8mb4 sont identiques.

Les paramètres de connexion (y compris SET NAMES) spécifient le codage dans le client . La définition colonne/table indique quel encodage est géré dans les colonnes. MySQL convertira entre ceux-ci comme INSERT ou SELECT. Encore une fois, tant que toutes les données sont sous-ensemble utf8, la conversion est possible (en fait, un non-op).

2

Quelques exemples de la façon dont MySQL effectue la conversion si vous essayez d'insérer la phrase:
«Ce emoji est un chat»

1 - avec une connexion UTF8 dans une table UTF8: MySQL tronque la chaîne de caractère 4 octets:
«Ce emoji»

2 - avec une connexion UTF8 dans une table de utf8mb4: MySQL remplace le caractère 4 octets avec "????"
«Ce emoji ???? est un chat »

3 - avec une connexion utf8mb4 dans une table de UTF8: MySQL remplace le caractère 4 octets avec
« Ce emoji "?"? un chat »

+0

De bons exemples de ce qui se passe quand utf8mb4 est nécessaire, mais il y a une discordance entre la connexion et la colonne. –