3 votes

Conversion MySQL UTF8 - Pourquoi vider la base de données ?

J'ai besoin de convertir ma base de données MySQL de la manière suivante latin1_sweedish_ci a utf8 on dirait que utf8_bin est mon option idéale. Je continue à lire que certaines personnes ont exporté leurs bases de données et les ont recréées. Est-ce vraiment nécessaire ? Ne puis-je pas simplement exécuter des requêtes pour convertir les données ?

J'ai lu qu'un type, en installant MySQL 5, a spécifié UTF-8 pendant la compilation de MySQL...

1voto

shelhamer Points 4327

Vous devez exporter la base de données et les convertir. La définition de l'encodage de la base de données, des tables et des lignes modifie la manière dont elles seront utilisées. à l'avenir mais ne convertissent pas les données qui ont déjà été stockées.

Il n'y a pas de gratuité pour l'encodage des bases de données.

Dans MySQL 5, vous devez réinitialiser tous les codages de caractères pour la base de données, les tables et les colonnes, puis réimporter les données. Le site Guide wordpress sur la modification des jeux de caractères est une bonne ressource, étape par étape, pour ce faire.

Je vous suggère de lire le guide pratique de Wordpress, car les étapes sont bien expliquées et claires, mais les points forts sont les suivants :

Définir le jeu de caractères DB :

ALTER DATABASE db_name CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Ensuite, définissez les encodages des tables existantes :

ALTER TABLE db_table CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Puis vidage avec un encodage, réimportation avec un autre.

mysqldump --user=username --password=password --default-character-set=latin1_swedish_ci dbname > dump.sql

mysql --user=username --password=password --default-character-set=utf8 dbname < dump.sql

Notez que si vous ne souhaitez pas vider et recharger l'ensemble de la base de données, vous pouvez effectuer la modification colonne par colonne en convertissant chaque colonne de texte en un type de blob équivalent, puis en la reconvertissant en une colonne de texte avec l'encodage souhaité, comme décrit dans le guide Wordpress à la page convertir des colonnes en blob et inversement .

0voto

peufeu Points 4758

Il n'est pas nécessaire de décharger et recharger. Vous pouvez demander à MySQL de transcoder les valeurs, mais vous devez lancer un ALTER pour chaque colonne qui contient des données textuelles . Assez ennuyeux, il faudrait écrire un script pour le générer ! Et après cela, il faut encore changer toutes les valeurs par défaut.

ALTER TABLE `foo` CHANGE `mycolumn` `mycolumn` 
TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL

0voto

Itcutives Points 333
ALTER TABLE `foo` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

fait toute la conversion pour moi, y compris les colonnes, ce que je devais faire cependant était d'écrire ceci pour chaque table dans la base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X