1267: Illegal mix of collations
MySQL¿Qué significa?
En una comparación u operación de combinación (JOIN, WHERE, UNION, CONCAT), se combinaron dos cadenas con collations distintas y MySQL no pudo determinar qué reglas de collation aplicar.
¿Por qué ocurre?
Normalmente se comparan columnas con juegos de caracteres/collations distintos (p. ej., utf8mb4_general_ci frente a utf8mb4_unicode_ci, o latin1 frente a utf8mb4), o hay una discrepancia entre una columna y la collation de la conexión. Habitual cuando las tablas/bases de datos se crearon con valores predeterminados distintos.
Cómo solucionarlo
Lleve ambos lados de la comparación a la misma collation: especifique una collation explícita con COLLATE (p. ej., col1 = col2 COLLATE utf8mb4_unicode_ci) o use CONVERT(... USING ...). Como solución permanente, convierta las columnas/tablas afectadas a un único juego de caracteres y collation coherentes. Alinee también la collation de la conexión (collation_connection).
Más entradas de este motor
- 3948Loading local data is disabled; this must be enabled on both the client and server sides (la carga de datos locales está deshabilitada; debe habilitarse en el cliente y en el servidor)
- 1075Incorrect table definition; there can be only one auto column and it must be defined as a key (definición de tabla incorrecta; solo puede haber una columna automática y debe definirse como clave)
- 1055Expression not in GROUP BY (only_full_group_by) (expresión que no está en GROUP BY)
- 1030Got error N from storage engine
- 1197Multi-statement transaction required more than 'max_binlog_cache_size' (la transacción de varias sentencias requirió más que 'max_binlog_cache_size')
- 1785Statement violates GTID consistency
- 3024Query execution was interrupted, maximum statement execution time exceeded (ejecución de la consulta interrumpida; se superó el tiempo máximo de ejecución)