2012-01-18 11 views
54

Jest MySQL table który ma tę definicję zaczerpnięty z SQLYog Enterprise:Jak zmienić domyślny zestaw znaków tabeli MySQL?

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 

Chcę zmienić default charset tego stołu latin1 do utf8. Jak to zrobić ?

Odpowiedz

131

Jeśli chcesz zmienić tabelę default character set i wszystkie kolumny postać do nowego zestawu znaków, należy użyć oświadczenia takiego:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name; 

Więc zapytanie będzie:

ALTER TABLE etape_prospection CONVERT TO CHARACTER SET utf8; 
+13

W przeciwieństwie do tego, jeśli po prostu użyjesz składni "ALTER TABLE tbl CHARACTER SET utf8", jak sugerują inni, zmienisz tylko domyślne kodowanie dla tabeli; Istniejące kolumny nie zostaną przekonwertowane tak jak będą, jeśli użyjesz tej odpowiedzi. – eaj

+4

Jeśli chcesz zastosować tę zmianę dla wszystkich tabel, które nie są zakodowane w ut8 w bazie danych, możesz użyć tego zapytania i wykonać uzyskane zapytania: 'SELECT concat ('alter table', table_name, 'CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ') FROM information_schema.tables WHERE table_schema =' > i table_collation! = 'Utf8_general_ci' GROUP BY nazwa_tabeli; ' – Maxooo

+2

nie zmienia to ** domyślnego zestawu znaków **. aby zmienić domyślną czynność "tak jak eak", powiedz: ALTER TABLE tbl CHARACTER SET utf8' –

2

Polecenie MySQL o nazwie ALTER TABLE powinno wystarczyć. Poniższe polecenie zmieni domyślny zestaw znaków twojej tabeli i zestaw znaków wszystkich jej kolumn na UTF8.

ALTER TABLE etape_prospection CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 

To polecenie przekształci wszystkie kolumny tekstowe w tabeli na nowy zestaw znaków. Zestawy znaków używają różnych ilości danych na znak, więc MySQL skonwertuje typ niektórych kolumn, aby upewnić się, że jest wystarczająco dużo miejsca, aby zmieścić tę samą liczbę znaków co stary typ kolumny.

Polecam przeczytać ALTER TABLE MySQL documentation przed modyfikacją jakichkolwiek danych na żywo.

domyślny charset
+1

Tak, to robi rób to, ale jedna rzecz jest inna w przypadku ** konwersji na **: nie może automatycznie usunąć starej kolumny zestawu znaków. –

13

Zmień stołu:

ALTER TABLE etape_prospection 
    CHARACTER SET utf8, 
    COLLATE utf8_general_ci; 

Aby zmienić ciąg kolumna charset exceute to zapytanie:

ALTER TABLE etape_prospection 
    CHANGE COLUMN etape_prosp_comment etape_prosp_comment TEXT CHARACTER SET utf8 COLLATE utf8_general_ci; 
+2

Nigdy nie powinieneś nigdy używać utf8_general_ci: po prostu nie działa. To powrót do złych, starych czasów stochrostyczności ASCII sprzed pięćdziesięciu lat. Rozróżnianie wielkości liter Unicode nie może być wykonane bez odwzorowania folderów z UCD. Na przykład "Σίσυφος" ma trzy różne sigmy; lub jak mała litera "TSCHüẞ" to "tschüβ", ale wielką literą "tschüβ" jest "TSCHÜSS". Możesz mieć rację, albo możesz być szybki. Dlatego musisz używać utf8_unicode_ci, ponieważ jeśli nie dbasz o poprawność, łatwo jest zrobić to nieskończenie szybko. – NPE

2

Można zmienić domyślną z alter table set default charset ale to nie zmieni charset istniejące kolumny. Aby to zmienić, musisz użyć alter table modify column.

Zmiana zestawu znaków w kolumnie oznacza tylko, że będzie w stanie przechowywać szerszy zakres znaków. Twoja aplikacja rozmawia z bazą danych przy użyciu klienta mysql, więc może zajść potrzeba zmiany również kodowania klienta.

+0

Chciałbym, gdyby nie ograniczona klawiatura na iPodzie touch :-) – Joni

+0

oraz iPod Touch/iPhone * musi * mieć * trochę * wady. :-P Nigdy nie zdawałem sobie sprawy, że ich brakuje, dopóki o tym nie wspomniałeś. ;-) – Aufwind

Powiązane problemy