Mysql
 sql >> Base de données >  >> RDS >> Mysql

Y a-t-il des effets négatifs lors de la modification de l'encodage de la table mysql ?

Danger Je pense que cela ALTER détruira le texte existant.

De plus, ... Votre 'nom' semble chinois, donc je suppose que vous voulez stocker des caractères chinois ? Dans ce cas, vous devez utiliser utf8mb4 , pas seulement utf8 . C'est parce que certains des caractères chinois prennent 4 octets (et ne sont pas dans le BMP Unicode).

Je pense que vous avez besoin de 2 étapes :

ALTER TABLE notebooks MODIFY comments BLOB;
ALTER TABLE notebooks MODIFY comments TEXT
          CHARACTER SET utf8mb4  COLLATE utf8mb4_general_520_ci;

Sinon les caractères latin1 sera "converti" en ut8. Mais si vous avez vraiment le chinois dans la colonne, vous n'avez pas le latin1. La modification en 2 étapes ci-dessus (1) désactive toute connaissance du jeu de caractères et (2) établit que les octets sont réellement encodés en utf8mb4.

Pour être plus sûr , faites d'abord

RENAME TABLE notebooks TO old;
CREATE TABLE notebooks LIKE old;
INSERT INTO notebooks SELECT * FROM old;

Ensuite, faites les deux ALTER et testez le résultat. En cas de problème, vous pouvez RENAME pour récupérer l'ancienne copie.