Se hace necesario cambiar el collation de todas las tablas de una base de datos desde mysql , se me ha instalado por defecto con latin_swedish y lo quiero cambiar a utf8_general_ci, normalmente la documentación que se nos dá que hacerlo de una en una, incluso con el phpmyadmin, tenemos una opción para hacerlo de forma completa a toda la base de datos, pero no funciona muy bien, por lo menos a mí no me funciona , no me daba error, pero no hacía nada, pero con este script lo podremos hacer de forma sencilla, lanzamos esta sentencia sql.
SELECT CONCAT(
'ALTER TABLE ', table_name, ' CHARACTER SET utf8 COLLATE utf8_general_ci; ',
'ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; ')
FROM information_schema.TABLES AS T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` AS C
WHERE C.collation_name = T.table_collation
AND T.table_schema = 'your_database_name'
AND
(C.CHARACTER_SET_NAME != 'utf8'
OR
C.COLLATION_NAME not like 'utf8%')
Una vez nos devuelve el conjunto de sentencias , simplemente necesitamos copiar y lanzarlo de nuevo, y se cambian todos los collate de todas las tablas a lo que necesitábamos.
Deja una respuesta