2009-06-11 5 views

risposta

10

Per quanto ne so, non è possibile eseguire ALTER TABLE comandi sul tavoli in information_schema. Invece probabilmente vorrai dare un'occhiata alle variabili character_set_*. Si può vedere che le variabili sono impostate a cui valori nel server MySQL con un comando show variables:

show variables like "character_set_%"; 

La variabile che ha a che fare con i meta dati in MySQL, come le information_schema tabelle, è la variabile character_set_system. Penso che il my.cnf sia il posto giusto per impostarlo.

C'è più informazione in questa pagina: UTF-8 for Metadata.

Per le tabelle normali, si cambia il set di caratteri di una tabella con un comando ALTER TABLE:

alter table some_table convert to character set utf8; 

Per fare questo, è necessario disporre del privilegio "alter".

È possibile vedere quali privilegi il server MySQL supporta con un comando show privileges e si può vedere quali privilegi sono concessi all'utente corrente con un comando show grants.

19

Per cambiare il set di caratteri e regole di confronto per tutte le colonne di una tabella esistente, l'uso:

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

quello privilegi cosa ho bisogno per alterare database di sistema minima idea –

+0

@MySQLDBA è necessario il privilegio "alter", si veda risposta cristiana –

+1

fa al caso questo avvertimento prima di eseguire un comando di 'ALTER' > Se si utilizza ALTER TABELLA per convertire una colonna da un set di caratteri a un altro, > MySQL tenta di mappare i valori dei dati, ma se i set di caratteri sono incompatibili, potrebbe esserci una perdita di dati. [Manuale di riferimento MySQL] (http://dev.mysql.com/doc/refman/5.0/en/charset-column.html) –

2
alter table some_table convert to character set utf8; 

fantastico che ha funzionato benissimo per quanto posso dire per me, ora posso usare cinese in quei tavoli !! e posso rimuovere tutto il utf8_encode() utf8_decode() in tutto il mio sito!

Problemi correlati