miércoles, 17 de julio de 2013

Cambiar collate de mysql

Una base de datos en la que se crearon varias tablas con scripts armados manualmente, estos se crearon con collate distintos, esto lleva problemas tanto para el trabajo de algunas aplicaciones como algunas consultas que igualan atributos que unos estan en un collate y otros en otro no llega a realizar la consulta el motor.

Entonces lo primero es detectar cuales son las tablas que estan en determinado collate:



SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='nombreBD' AND NOT CHARACTER_SET_NAME IS NULL AND COLLATION_NAME<>'latin1_general_cs';


lo que debemos de jugar es con nombreBD, y con latin1_general_cs, esto debemos de ver en que codificacion necesitamos que esten nuestras tablas.

Con la siguiente consulta podemos cambiar el collate de una tabla:

ALTER TABLE `tabla` CHARACTER SET latin1 COLLATE latin1_general_cs;

y con esta otra consulta cambiamos el collate de un atributo.

ALTER TABLE `tabla` MODIFY COLUMN `atributo` CHAR(1) CHARACTER SET latin1 COLLATE latin1_general_cs DEFAULT NULL;

En ambas consultas se debe de cambiar donde dice tabla y atributo, para los datos nuestro, y la codificación que nos interese (latin1_general_cs en el ejemplo)





No hay comentarios: