2010-01-27 15 views

cevap

12
mysqldump --user=username --password=password --default-character-set=latin1 --skip-set-charset dbname > dump.sql 
sed -r 's/latin1/utf8/g' dump.sql > dump_utf.sql 
mysql --user=username --password=password --execute="DROP DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;" 
mysql --user=username --password=password --default-character-set=utf8 dbname < dump_utf.sql 
+9

çalıştırabilirsiniz Ve umarım veritabanı içeriğinin herhangi içinde “latin1” içermiyor sorgular bir sürü, inşa edecek senin sonrası dönüşüm web sitesi aniden hatalı veritabanı komutları sunuyorsa dava! –

+0

sed'den sonra: uconv --from-code latin1 - kod utf8 dump_utf.sql> dump_utf_fixed.sql – scribe

+0

SED nedir ????? – marcolopes

37

:

ALTER KARAKTER SETİ utf8 HARMANLA utf8_unicode_ci İÇİN TABLO sekmesi DÖNÜŞTÜR; Bütün veritabanı için

Ben buna benzer başka bir yöntem bilmiyorum:

http://www.commandlinefu.com/commands/view/1575/convert-all-mysql-tables-and-fields-to-utf8

+18

Komut satırı erişimi olmayanlar için, veritabanınızdaki 'SHOW TABLES;' komutunu hızlıca çalıştırabilirsiniz, bunları http://nimbletext.com/live adresinde NimbleText dosyasına yapıştırabilir ve sonra da bu modeli değişiklik betiğini oluşturmak için kullanabilirsiniz: 'ALTER TABLE \ 0 $ \ 'CHARACTER SET utf8 COLLATE utf8_unicode_ci; – jocull

+0

Nimbletext ile ilgili ipucu bazı hayatları kurtarır sanırım. Oy ver! – James

-1

(veritabanı adı

SEÇ CONCAT ile my_database_name yerine 'ALTER TABLE', TABLE_NAME, ' CHARACTER SET utf8 COLLATE utf8_unicode_ci; ') DÖNÜŞ

bu kullanıcıların bir gerekçesi olabilir başka ... Böyle bir karakter kodlaması hakkında blog gönderileri gibi

İlgili konular