viernes, 1 de marzo de 2013

Enredo 'Mix Collations"

Error:  2013-03-01 11:01:45,192 [http-8080-2] ERROR fm.ApiController  - GET: /convenio/buscar: org.hibernate.exception.GenericJDBCException: could not execute query
2013-03-01 11:01:45,196 [http-8080-4] ERROR util.JDBCExceptionReporter  - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (latin1_spanish_ci,IMPLICIT) for operation '='

 
Situación: Un día agregé un nuevo dominio en mi aplicación Grails con MySQL,  como es lógico se creó una tabla en mi base de datos, realicé mi desarollo el cual incluyó hacer un cruce entre tablas anteriores y la nueva, hasta ahí todo ok,  pero como siempre el error antes mencionado surgió cuando hice el despliege en producción !!  (el karma eterno de los desarrolladores).

Diagnóstico: La tablas anteriores y la nueva no tenian el mismo collation (parece tan obvio después que sabes que esto y como lo solucionas :D )
Para saber ver que collation tiene cada tabla se consulta la la tabla tables en la base de datos information_schema en MySQL



Solución: Ir a las tablas resultantes de la consulta anterior y hacer el cambio de collation a nivel de tabla y campos, puesto que estos pueden ser distintos.

El cambio se pude hacer mediante la siguiente sentencia SQL:

No hay comentarios:

Publicar un comentario