Cambiar el collation de todas las tablas en mysql

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.

Entradas relacionadas

Un pensamiento en “Cambiar el collation de todas las tablas en mysql

  1. Yo tengo el problema que en unos controles select de html, que lleno con una base de datos de mysql, no pone los acentos de las palabras con mayúsculas (pone un rombo negro con un signo de interrogación adentro) y en minúsculas si los pone bien; pero cuando agrego la siguiente instrucción en la conexión a la base de datos: mysqli_query($con,”SET NAMES ‘utf8′”);
    Pone bien los acentos en mayúsculas, pero en minúsculas pone letras raras donde van los acentos. El atributo Collation de la base de datos es: utf8_general_ci, y ya traté de varias formas pero no puedo hacer que ponga los acentos en minúsculas y mayúsculas, por lo que agradezco de antemano su ayuda. Saludos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.