Saya perlu menjalankan pernyataan ini di semua tabel untuk semua kolom.
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
Apakah mungkin untuk mengotomatisasi ini dengan cara apa pun di dalam MySQL? Saya lebih suka menghindari mysqldump
Pembaruan: Richard Bronosky menunjukkan caranya :-)
Kueri yang perlu saya jalankan di setiap tabel:
alter table DBname.DBfield CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Gila kueri untuk menghasilkan semua kueri lain:
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';
Saya hanya ingin menjalankannya dalam satu database. Butuh waktu terlalu lama untuk mengeksekusi semua dalam satu lulus. Ternyata itu menghasilkan satu permintaan per bidang per tabel. Dan hanya satu permintaan per tabel yang diperlukan (berbeda dengan penyelamatan). Mendapatkan output pada file adalah bagaimana saya menyadarinya.
Cara menghasilkan output ke file:
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
Dan akhirnya untuk mengeksekusi semua pertanyaan:
mysql --user=user --password=secret < alter.sql
Terima kasih Richard. Kamulah orangnya!