web-dev-qa-db-fra.com

Mysql: Définir le jeu de caractères de la colonne

J'ai une table existante et je veux convertir le jeu de caractères uniquement pour une colonne spécifique en utf-8.

Je sais que cette commande ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 le fait pour toute la table mais je cherche une commande spécifique à la colonne. 

Y a-t-il une commande pour ça?

35
Subway

Essaye ça:

ALTER TABLE t MODIFY col1 CHAR(50) CHARACTER SET utf8;
61
divyabharathi

Je partage cela, cela peut toujours aider ... J'ai récemment modifié une base de données; passer de utf8 à utf8mb4; voici le script qui m'a permis de générer les modifications ..

Modifier la table:

SELECT CONCAT("ALTER TABLE `",`TABLE_NAME`,"` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;") 
FROM `information_schema`.`TABLES` 
WHERE `TABLE_SCHEMA` = 'xxxx';

Modifier chaque colonne:

SELECT CONCAT("ALTER TABLE `",`TABLE_NAME`,"` CHANGE `",`COLUMN_NAME`,"` `",`COLUMN_NAME`,"` ",COLUMN_TYPE," CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ",IF(`IS_NULLABLE`='YES', 'NULL', 'NOT NULL')," ",IF(`COLUMN_DEFAULT` IS NOT NULL, CONCAT(" DEFAULT '", `COLUMN_DEFAULT`, "'"), ''),";") 
FROM `information_schema`.`COLUMNS` 
WHERE `TABLE_SCHEMA` = 'xxx' AND `TABLE_NAME` = 'xxxx' AND (`CHARACTER_SET_NAME` IS NOT NULL OR `COLLATION_NAME` IS NOT NULL);
5
Abdel

En dessous, on a travaillé pour moi.

ALTER TABLE table_name   
MODIFY column_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci;
0
Niroopchowdary