Al realizar una actualización a un sitio web desarrollado sobre la plataforma Drupal (administrador de contenidos), y al pasar el sitio web al idioma español, nos encontramos que algunas tablas presentaban la colación (collation) errónea y nos mostraba el siguiente error:
user warning: Illegal mix of collations
Afortunadamente con este script de Mysql (ver 5.x o superior), se pueden generar las instrucciones necesarias para corregir el problema en cada tabla:
SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') as stmt
FROM `information_schema`.`TABLES` t
WHERE 1
AND t.`TABLE_SCHEMA` = 'database_name'
ORDER BY 1
Cada línea o instrucción queda de esta manera:
ALTER TABLE `database_name`.`table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci
Reemplaze 'database_name' con el nombre de su base de datos, ejecute la instrucción, copie y pegue el resultado para ejecutarlo y listo!, pan comido...
Y por último para asegurarse que la base de datos y tablas nuevas que se creen tengan la misma colación, ejecute:
ALTER DATABASE `database_name`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
ALTER DATABASE `database_name`
CHARACTER SET utf8
COLLATE utf8_general_ci;
Calificación:
215afd3d-1341-40d4-91fe-e24a9fd66661|1|5.0
Tags: drupal, php, mysql