Tüm sütunlar için tüm tablolarda bu ifadeleri yürütmek gerekiyor.
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
Bunu MySQL içinde herhangi bir şekilde otomatikleştirmek mümkün müdür? MySQLDump önlemek istiyorum
Güncelleme: Richard Bronosky bana yolu gösterdi :-)
Her tabloda yürütmek için gereken sorgu:
alter table DBname.DBfield CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Diğer tüm sorguları oluşturmak için çılgın sorgu:
SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname';
Sadece bir veritabanında yürütmek istedim. Hepsini bir geçişte gerçekleştirmek çok uzun sürüyordu. Tablo başına alan başına bir sorgu oluşturduğu ortaya çıktı. Ve tablo başına sadece bir sorgu gerekliydi (kurtarmaya özgü). Bir dosyada çıktı almak bunu nasıl fark ettiğim oldu.
Bir dosyaya çıktı nasıl oluşturulur:
mysql -B -N --user=user --password=secret -e "SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname';" > alter.sql
Ve son olarak tüm sorguları yürütmek için:
mysql --user=user --password=secret < alter.sql
Teşekkürler Richard. Sen adamsın!