Il existe un MySQL table
qui a cette définition tirée de SQLYog Enterprise
:
Table Create Table
----------------- ---------------------------------------------------------
etape_prospection CREATE TABLE `etape_prospection` (
`etape_prosp_id` int(10) NOT NULL AUTO_INCREMENT,
`type_prosp_id` int(10) NOT NULL DEFAULT '0',
`prosp_id` int(10) NOT NULL DEFAULT '0',
`etape_prosp_date` datetime DEFAULT NULL,
`etape_prosp_comment` text,
PRIMARY KEY (`etape_prosp_id`),
KEY `concerne_fk` (`prosp_id`),
KEY `de_type_fk` (`type_prosp_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
Je veux changer le default charset
de ce tableau de latin1
à utf8
. Comment faire ça ?
Réponses:
Si vous souhaitez changer le tableau
default character set
et toutes les colonnes de caractères en un nouveau jeu de caractères, utilisez une instruction comme celle-ci:La requête sera donc:
la source
ALTER TABLE tbl CHARACTER SET utf8
syntaxe suggérée par d'autres, vous ne modifierez que l'encodage par défaut pour table; les colonnes existantes ne seront pas converties comme elles le seront si vous utilisez cette réponse.SELECT concat('alter table ', table_name, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') FROM information_schema.tables WHERE table_schema='<your_database_name>' and table_collation != 'utf8_general_ci' GROUP BY table_name;
ALTER TABLE tbl CHARACTER SET utf8
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Changer le jeu de caractères par défaut de la table:
Pour modifier le jeu de caractères de la colonne de chaîne, exécutez cette requête:
la source
La
ALTER TABLE
commande MySQL devrait faire l'affaire. La commande suivante changera le jeu de caractères par défaut de votre table et le jeu de caractères de toutes ses colonnes en UTF8.Cette commande convertit toutes les colonnes de type texte du tableau dans le nouveau jeu de caractères. Les jeux de caractères utilisent différentes quantités de données par caractère, donc MySQL convertira le type de certaines colonnes pour s'assurer qu'il y a suffisamment de place pour contenir le même nombre de caractères que l'ancien type de colonne.
Je vous recommande de lire la documentation ALTER TABLE MySQL avant de modifier des données en direct.
la source
Si quelqu'un recherche une solution complète pour modifier le jeu de caractères par défaut pour toutes les tables de base de données et convertir les données, il peut en être une:
Vous pouvez placer ce code dans le fichier par exemple
chg_char_set.sql
et l'exécuter par exemple en l'appelant depuis le terminal MySQL:Appelez ensuite la procédure définie avec les paramètres d'entrée souhaités, par exemple
Une fois que vous avez testé les résultats, vous pouvez supprimer ces procédures stockées:
la source
Vous pouvez changer la valeur par défaut avec un
alter table set default charset
mais cela ne changera pas le jeu de caractères des colonnes existantes. Pour changer cela, vous devez utiliser unalter table modify column
.La modification du jeu de caractères d'une colonne signifie uniquement qu'elle pourra stocker une plus large gamme de caractères. Votre application communique avec la base de données à l'aide du client mysql, vous devrez peut-être également modifier l'encodage du client.
la source