Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] 1271 - Ilegal mix of collations for operation 'UNION'

Estas en el tema de 1271 - Ilegal mix of collations for operation 'UNION' en el foro de Mysql en Foros del Web. 1271 - Ilegal mix of collations for operation 'UNION' Intentando restaurar, en una maquina con W7, un backup me da este error. El mismo backup ...
  #1 (permalink)  
Antiguo 13/03/2013, 13:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
1271 - Ilegal mix of collations for operation 'UNION'

1271 - Ilegal mix of collations for operation 'UNION'

Intentando restaurar, en una maquina con W7, un backup me da este error.

El mismo backup se ha restaurado en mi maquina XP sin problemas, en el segundo intento, pero la habia restaurado otras veces sin ningun problema.

El backup se ha generado en phpmyadmin 3.3.1 del servidor remoto y lo intento resteurar con el phpmyadmin local 2.10.3

phpmyadmin
Remoto 3.3.1
Local 2.10.3

Versión del servidor:
Remoto 5.0.82-log
Local 5.0.51b-community-nt-log

Juego de caracters de MySQL:
Remoto UTF-8 Unicode (utf8)
Local UTF-8 Unicode (utf8)

Todas las tablas tienen la misma collation utf8_general_ci.

Da el error al crear una vista que une varias tablas...

Alguna pista?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #2 (permalink)  
Antiguo 13/03/2013, 14:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 1271 - Ilegal mix of collations for operation 'UNION'

¿Podrías postear el CREATE VIEW de esa vista?
Podría darnos una mejor idea de lo que puede pasar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 13/03/2013, 14:23
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: 1271 - Ilegal mix of collations for operation 'UNION'

Código MySQL:
Ver original
  1. CREATE ALGORITHM=UNDEFINED DEFINER=`quim`@`localhost` SQL SECURITY DEFINER VIEW `bbdd`.`v_grupos` AS
  2. select concat(_utf8'SL',`vsl`.`idGruposSL`) AS `idGrupo`,
  3. convert(concat_ws(_utf8' ',`vsl`.`grupoActividad`,`vsl`.`gruposSL`,`vsl`.`abreviacionAU`) using utf8) AS `grupo`,
  4. `vsl`.`abreviacionAU` AS `au`,
  5. `vsl`.`idCursos` AS `idCursos`
  6. from `bbdd`.`v_grupossl` `vsl`
  7. select concat(_utf8'GA',`vga`.`idGrupoActividad`) AS `idGrupo`,
  8. convert(concat_ws(_utf8' ',`vga`.`grupoActividad`,_utf8'GA',`vga`.`abreviacionAU`) using utf8) AS `grupo`,
  9. `vga`.`abreviacionAU` AS `au`,
  10. `vga`.`idCursos` AS `idCursos`
  11. from `bbdd`.`v_gruposactividad` `vga`
  12. select concat(_utf8'TP',`vtp`.`idTutoriasP`) AS `idGrupo`,
  13. convert(concat_ws(_utf8' ',`vtp`.`grupoActividad`,`vtp`.`grupoTP`,`vtp`.`abreviacionAU`) using utf8) AS `grupo`,
  14. `vtp`.`abreviacionAU` AS `au`,
  15. `vtp`.`idCursos` AS `idCursos`
  16. from `bbdd`.`v_tutoriasp` `vtp`;

Es una union de otras vistas... pero es que no me habia dado nunca problemas.

La mas complicada es

Código MySQL:
Ver original
  1. CREATE ALGORITHM=UNDEFINED DEFINER=`quim`@`localhost` SQL SECURITY DEFINER VIEW `bbdd`.`v_gruposactividad` AS
  2. select distinct `bbdd`.`grupoactividad`.`idGrupoActividad` AS `idGrupoActividad`,
  3. `bbdd`.`grupoactividad`.`idGrupoActividadCAnt` AS `idGrupoActividadCAnt`,
  4. `bbdd`.`grupoactividad`.`grupoActividad` AS `grupoActividad`,
  5. `bbdd`.`asignaturasu`.`idAsignaturasU` AS `idAsignaturasU`,
  6. `bbdd`.`asignaturasu`.`codigoAU` AS `codigoAU`,
  7. `bbdd`.`asignaturasu`.`denominacionAU` AS `denominacionAU`,
  8. `bbdd`.`asignaturasu`.`abreviacionAU` AS `abreviacionAU`,
  9. `bbdd`.`asignaturasu`.`docenciaSiNo` AS `docenciaSiNo`,
  10. `bbdd`.`asignaturasu`.`idTpTemporalidad` AS `idTpTemporalidad`,
  11. `bbdd`.`grupoactividad`.`idGrupoActividadRef` AS `idGrupoActividadRef`,
  12. `grupoactividad_1`.`grupoActividad` AS `gARef`,
  13. `grupoactividad_1`.`idAsignaturasU` AS `idAURef`,
  14. `asignaturasu_1`.`codigoAU` AS `cAURef`,
  15. `asignaturasu_1`.`denominacionAU` AS `aURef`,
  16. `asignaturasu_1`.`abreviacionAU` AS `abreAURef`,
  17. `bbdd`.`grupoactividad`.`idCursos` AS `idCursos`,
  18. `bbdd`.`grupoactividad`.`numSL` AS `numSL`,
  19. `bbdd`.`grupoactividad`.`numTP` AS `numTP`,
  20. `bbdd`.`grupoactividad`.`ausencias` AS `ausencias`,
  21. `v_coordinadores`.`idProfesorado` AS `idProfesorado`,
  22. `v_coordinadores`.`profe` AS `profe`,
  23. `bbdd`.`asignaturasu`.`idTpTitulaciones` AS `idTpTitulaciones`,
  24. `bbdd`.`tptitulaciones`.`abrTpTit` AS `abrTpTit`
  25. from (((((`bbdd`.`grupoactividad` left join `bbdd`.`grupoactividad` `grupoactividad_1` on((`bbdd`.`grupoactividad`.`idGrupoActividadRef` = `grupoactividad_1`.`idGrupoActividad`)))
  26.              join `bbdd`.`asignaturasu` on((`bbdd`.`grupoactividad`.`idAsignaturasU` = `bbdd`.`asignaturasu`.`idAsignaturasU`)))
  27.              left join `bbdd`.`asignaturasu` `asignaturasu_1` on((`grupoactividad_1`.`idAsignaturasU` = `asignaturasu_1`.`idAsignaturasU`)))
  28.              left join `bbdd`.`v_coordinadores` on((`bbdd`.`grupoactividad`.`idGrupoActividad` = `v_coordinadores`.`idGrupoActividad`)))
  29.              join `bbdd`.`tptitulaciones` on((`bbdd`.`asignaturasu`.`idTpTitulaciones` = `bbdd`.`tptitulaciones`.`idTpTitulaciones`)));

Seguramente ahora que me las miro fuera de contexto serian optimizables... pero no es un problema de performanc si no de cración...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #4 (permalink)  
Antiguo 13/03/2013, 16:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 1271 - Ilegal mix of collations for operation 'UNION'

Por lo que he podido averiguar, este problema se suele producir en este caso cuando se genera un conflicto de collations entre cadenas de texto que quedan impactadas por las collation del ambiente de ejecución.
Básicamente no es un "error", y es resoluble.

Por lo pronto, confirmemos algunos detalles, como por ejemplo ciertas definiciones que suponemos correctas desde el inici.
Muestranos el resultado de estas consultas:
Código MySQL:
Ver original
  1. SHOW VARIABLES LIKE 'character_set%';
  2. SHOW VARIABLES LIKE 'collation%';
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 14/03/2013, 08:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: 1271 - Ilegal mix of collations for operation 'UNION'

Código pre:
Ver original
  1. Variable_name   Value
  2. collation_connection    utf8_general_ci
  3. collation_database  latin1_swedish_ci
  4. collation_server    latin1_swedish_ci

En el remoto!!!... por aqui estara puesto que en el local no esta asi.... cuando llegue a casa lo posteo.

Pero el error se produce al restaurar la bbdd sobre un esquema creado y vacio...

Gracias
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #6 (permalink)  
Antiguo 14/03/2013, 09:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 1271 - Ilegal mix of collations for operation 'UNION'

Por lo que entiendo de un caso informado en Bugs de la web oficial, el problema puede estar produciéndose en aquellos campos o valores que no se están declarando como UTF8 dentro de la función CONCAT() o CONCAT_WS(), ya que para esos casos MySQL toma los valores de collation del ambiente de ejecución, o bien los declarados en la creación de la base.
no hay que olvidarse que aunque el dato de origen sea de una tabla con cierta collation, al momento del anidamiento, pueden estar impactando las otras collation, porque se vuelve un dato o tabla derivada (virtual en memoria).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 14/03/2013, 12:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: 1271 - Ilegal mix of collations for operation 'UNION'

Remoto CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */
Local CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */

SHOW VARIABLES LIKE 'character_set%';
Remoto
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/

Local
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir C:\AppServ\MySQL\share\charsets\

SHOW VARIABLES LIKE 'collation%';
Remoto
collation_connection utf8_general_ci
collation_database latin1_swedish_ci
collation_server latin1_swedish_ci

Local
collation_connection utf8_unicode_ci
collation_database utf8_general_ci
collation_server utf8_general_ci

Estos son los datos de mi maquina donde si se ha restaurado aun que no a la primera la bbdd... hay difrencias. La tercera maquina en discordia no la tengo ahora.

Para igualar los los distintos valores hay que modificar my.cnf directamente, no veo instrucciones ALTER... no?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 14/03/2013 a las 13:03

Etiquetas: ilegal, php, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:15.