La conversion de utf8_general_ci les tables et les champs pour utf8_unicode_ci
J'ai fait une erreur lors de la conception de ma base de données d'application il y a plusieurs années et les paramètres de classement de mes tables et champs de la table sont mélangés. Certains d'entre eux sont utf8_general_ci et certains d'entre eux sont utf8_unicode_ci.
Cela provoque des problèmes lors de l'assemblage des tables avec des classements différents. Maintenant, j'ai l'intention de modifier les paramètres de classement et de faire d'eux même: utf8_unicode_ci. Je vais être en cours d'exécution de ces deux requêtes SQL sur toutes mes tables.
ALTER TABLE `table1` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE `table1` CHANGE `Action` `Action` VARCHAR( 250 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
Ma question est, est-ce que courir ces deux requêtes SQL pause toutes les valeurs de champ, en particulier ceux qui contient des caractères accentués? Ou est-ce sans danger pour l'exécution de ces deux requêtes?
Hâte de vous entendre.
Merci pour vos réponses!
OriginalL'auteur TamTam | 2010-10-19
Vous devez vous connecter pour publier un commentaire.
veuillez consulter la doc mysql, qui parle de changer de jeu de caractères et collation
http://dev.mysql.com/doc/refman/5.1/en/charset-column.html
Sa en disant que "Si vous utilisez ALTER TABLE pour convertir une colonne à partir d'un jeu de caractères à un autre, MySQL tente de mapper les valeurs de données, mais si les jeux de caractères sont incompatibles, il peut y avoir une perte de données."
--Acclamations
Ces deux encodages de caractères sont compatibles. En fait, c'est exactement le même codage de caractères, juste une façon différente de les comparer lors du tri. Tous les index sur les colonnes serait probablement besoin d'obtenir reconstruit, c'est tout.
OriginalL'auteur Koteswara sarma
Classement seulement affecte la façon dont les chaînes de caractères dans un champ sont comparés, pas la façon dont ils sont stockés. Aussi loin que vous restez avec l'encodage utf8, vous êtes en sécurité.
ß
=ss
et d'autres, mais aucune donnée ne pourra être changé. Voir dev.mysql.com/doc/refman/5.1/en/charset-unicode-sets.html pour plus de détailsLes gars, veuillez vérifier cela (dev.mysql.com/doc/refman/5.1/en/charset-column.html) comme Koteswasa mentionne ci-dessous. Merci pour votre temps.
Je corrige la position des mains. Toujours à l'intérieur même de l'encodage, de la commutation de classement est sûr.
OriginalL'auteur Mchl