Mejor opción para cambiar también la clasificación de columnas varchar dentro de la tabla también
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"
Además, si tiene datos con la clave forein en la columna que no es utf8 antes de iniciar el script de grupo, use
SET foreign_key_checks = 0;
Significa que SQL global será para mySQL:
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;
Pero tenga cuidado si de acuerdo con la documentación de mysql http://dev.mysql.com/doc/refman/5.1/en/charset-column.html ,
Si usa ALTER TABLE para convertir una columna de un juego de caracteres a otro, MySQL intenta asignar los valores de los datos, pero si los juegos de caracteres son incompatibles, puede haber pérdida de datos. "
EDITAR: Especialmente con el tipo de columna enum, simplemente se bloquea por completo el conjunto de enumeraciones (incluso si no hay caracteres especiales)
https://bugs.mysql.com/bug.php?id=26731