Se puede hacer con un solo comando (en lugar de 148 de PHP):
mysql --database=dbname -B -N -e "SHOW TABLES" \
| awk '{print "SET foreign_key_checks = 0; ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; SET foreign_key_checks = 1; "}' \
| mysql --database=dbname &
Tienes que amar la línea de comandos... (Es posible que debas emplear el --user
y --password
opciones para mysql
).
EDITAR:para evitar problemas de clave externa, se agregó SET foreign_key_checks = 0;
y SET foreign_key_checks = 1;