Devo eseguire queste istruzioni in tutte le tabelle per tutte le colonne.
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
È possibile automatizzarlo in qualche modo all'interno di MySQL? Preferirei evitare mysqldump
Aggiornamento: Richard Bronosky mi ha mostrato la strada :-)
La query che dovevo eseguire in ogni tabella:
alter table DBname.DBfield CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Query folle per generare tutte le altre query:
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';
Volevo solo eseguirlo in un database. Stava impiegando troppo tempo per eseguire tutto in un unico passaggio. Si è scoperto che stava generando una query per campo per tabella. Era necessaria solo una query per tabella (distinta per il salvataggio). Ottenere l'output su un file è stato come me ne sono reso conto.
Come generare l'output in un 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
E infine per eseguire tutte le query:
mysql --user=user --password=secret < alter.sql
Grazie Richard. Tu sei l'uomo!