Tablonun içindeki varchar sütunlarının harmanlamasını da değiştirmek için daha iyi bir seçenek
SELECT CONCAT('ALTER TABLE `', TABLE_NAME,'` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') AS mySQL
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA= "myschema"
AND TABLE_TYPE="BASE TABLE"
Ek olarak, utf8 olmayan sütunda forein anahtarına sahip verileriniz varsa, grup komut dosyasını başlatmadan önce
SET foreign_key_checks = 0;
Bu, global SQL'in mySQL için olacağı anlamına gelir:
SET foreign_key_checks = 0;
ALTER TABLE `table1` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE `table2` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE `tableXXX` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
SET foreign_key_checks = 1;
Ancak mysql belgelerine göre dikkatli olun http://dev.mysql.com/doc/refman/5.1/en/charset-column.html ,
Bir sütunu bir karakter kümesinden diğerine dönüştürmek için ALTER TABLE kullanırsanız, MySQL veri değerlerini eşlemeye çalışır, ancak karakter kümeleri uyumsuzsa, veri kaybı olabilir. "
DÜZENLEME: Özellikle sütun türü numaralandırmasıyla, yalnızca set numaralandırmalarının tamamen çökmesi (özel karakterler olmasa bile)
https://bugs.mysql.com/bug.php?id=26731