2009-06-11 9 views

Répondre

10

Pour autant que je sache, vous ne pouvez pas exécuter ALTER TABLE commandes sur le tables en information_schema. Au lieu de cela, vous voudrez probablement jeter un coup d'œil aux variabes character_set_*. Vous pouvez voir quelles variables sont définies dans laquelle les valeurs de votre serveur MySQL avec une commande show variables:

show variables like "character_set_%"; 

La variable qui doit faire avec des méta-données dans MySQL, comme les tables information_schema, est la variable character_set_system. Je pense que le my.cnf est le bon endroit pour le définir.

Vous trouverez plus d'informations sur cette page: UTF-8 for Metadata.

Pour les tables ordinaires, vous modifiez le jeu de caractères d'une table avec une commande ALTER TABLE:

alter table some_table convert to character set utf8; 

Pour ce faire, vous aurez besoin du privilège « modifier ».

Vous pouvez voir quels privilèges votre serveur MySQL prend en charge avec une commande show privileges, et vous pouvez voir quels privilèges sont accordés à votre utilisateur actuel avec une commande show grants.

19

Pour changer le jeu de caractères et la collation toutes les colonnes d'une table existante, utilisez:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]; 
+0

ce que priviledges dois-je modifier la base de données du système toute idée –

+0

@MySQLDBA vous aurez besoin du privilège « modifier », voir la réponse chrétienne –

+1

Assurez-vous que vous considérez cet avertissement avant d'exécuter une commande 'ALTER' > Si vous utilisez ALTER TABLE pour convertir une colonne d'un jeu de caractères en 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. [Manuel de référence MySQL] (http://dev.mysql.com/doc/refman/5.0/fr/charset-column.html) –

2
alter table some_table convert to character set utf8; 

impressionnant qui a fonctionné très bien autant que je peux dire pour moi, maintenant je peux employer le chinois dans ces tables! et je peux supprimer tous les utf8_encode() utf8_decode() sur mon site!