blog webempresa

¿Cómo solucionar error illegal mix of collations en WooCommerce?

por | Abr 20, 2024 | Errores en WordPress

Cuando gestionamos una tienda en línea con WooCommerce, una de nuestras responsabilidades periódicas como administradores del sitio web es mantener actualizados todos los elementos, incluyendo temas y plugins.

Durante este proceso de actualización, a veces surgen conflictos que son menores. Sin embargo, más allá de la alerta de error que podamos ver, es importante abordar cualquier problema, por pequeño que sea, para evitar que se convierta en algo más grave.

Por ejemplo, al actualizar a las últimas versiones de WooCommerce, es posible encontrarse con un error peculiar conocido como “illegal mix of collations”.

En este artículo, vamos a explicar qué significa el error “Illegal mix of collations” en WooCommerce y cómo podemos resolverlo.

 ¿Qué es el error Illegal mix of collations en WooCommerce?

 

codigo sql

El error “Illegal mix of collations” o bien traducido a “mezcla ilegal de intercalaciones” es un mensaje de error en MySQL que puede ser común, y que se manifiesta cuando se intenta realizar una operación que involucra la combinación de datos con diferentes intercalaciones.

Una “collation” o intercalación se encarga de determinar cómo se comparan y ordenan los caracteres en un conjunto de datos. Si existen diferentes collations se pueden producir resultados diferentes al ordenar o comparar cadenas de texto.

Por su parte, el error Illegal mix of collations en WooCommerce puede manifestarse cuando hay un conflicto entre las configuraciones de las collations (intercalaciones) en la base de datos que soporta tanto WordPress como WooCommerce.

Ejemplo del error manifestándose:

WordPress database error Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_unicode_520_ci,IMPLICIT) for operation '=' 

En WooCommerce, este error suele presentarse al intentar realizar operaciones que involucran la comparación o combinación de datos con diferentes collations (intercalaciones), como al buscar productos, realizar consultas o filtrar información.

 ¿Cuándo se produce el error Illegal mix of collations en WooCommerce?

 

Aunque tenemos conocimiento de los posibles motivos por los que se produce el error “Illegal mix of collations” en WooCommerce, es crucial entender por qué ocurre en entornos fuera de WordPress antes de adentrarnos en el caso específico de WooCommerce.

El error “Illegal mix of collations” puede surgir en cualquier sistema que utilice una base de datos, por lo que las posibles causas pueden incluir las siguientes:

Operaciones entre campos con diferentes intercalaciones: cuando se realizan operaciones (concatenación, comparación, etc.) entre campos de diferentes tablas o incluso dentro de la misma tabla, pero con collations distintas en la base de datos, suele presentarse el error.

Consultas con cláusula ORDER BY o GROUP BY: si se intenta ordenar o agrupar datos con collations diferentes en una consulta a la base de datos, puede ocurrir el error.

Uniones (JOINs) entre tablas con diferentes collations: cuando se dispone a combinar datos de tablas con collations distintas en una operación de unión puede generarse el error.

Considerando los casos que pueden ocurrir en cualquier sistema con una base de datos, podemos abordar los casos concretos que pudiesen ocurrir en un entorno bajo WordPress y WooCommerce.

Conflicto de collations entre tablas: si las tablas de WordPress y WooCommerce establecidas en la misma base de datos tienen collations diferentes, puede provocar conflictos al realizar operaciones que involucren datos de ambas tablas.

Problemas al importar/exportar datos: al ejecutar procesos como importar o exportar datos con collations distintos a los previamente establecidos en la base de datos actual, puede presentarse el error.

Plugins o temas personalizados: cuando hacemos uso o desarrollamos plugins de WordPress o temas de WordPress personalizados, estos pueden introducir consultas que causan conflictos entre las tablas y los datos en la base de datos.

 ¿Cómo solucionar error Illegal mix of collations en WooCommerce?

 

A continuación, vamos a repasar algunas opciones para identificar y dar solución al error Illegal mix of collations en WooCommerce.

Debemos destacar que antes de realizar cualquiera de los métodos sugeridos, se recomienda realizar un respaldo de la base de datos del sitio web o en su defecto un backup global para que, en el caso de cualquier error, sea más simple el restablecer la página a su estado original antes de los cambios realizados.

 Cambiar la collation de la base de datos manual sin código

 

Primero debemos identificar el sistema de cotejamiento en el que está configurada nuestra base de datos.

Para ello debemos acceder a nuestro panel de administración de bases de datos, que en este caso es phpMyAdmin.

Para fines de este ejemplo estaremos desde las vistas de WePanel, pero lo sugerido aplica para cualquier hosting web que ofrezca un panel de administración de base de datos como phpMyAdmin.

phpmyadmin wepanel

Luego, con nuestra base de datos seleccionada, si nos dirigimos a la pestaña de “Operaciones” vamos a poder identificar cuál es la collation por defecto configurada en nuestra base de datos

collation base de datos

 Cambiar la collation de todas las tablas de la base de datos

 

Como hemos visto en el punto anterior, desde el apartado de “Cotejamiento”, tendremos las opciones por marcar que nos permite cambiar la collation configurada en todas las tablas y las columnas de dichas tablas en la base de datos de WordPress.

cambiar collation base de datos

 Cambiar collation de tablas concretas

 

Si el problema surge con tablas específicas en nuestra base de datos, siempre podremos cambiar su collation de forma manual, lo que debemos hacer es identificar las tablas que pudiesen estar afectadas o tengan una collation que difiera de la mayoría.

tablas base de datos

Si ingresamos en una tabla desde las opciones de “Operaciones” podemos cambiar el tipo de cotejamiento de esa tabla en concreto.

cambiar collation tabla

 Cambiar la collation de la base de datos manual con codigo

 

Desde phpMyAdmin podemos realizar consultas MySQL que nos pueden facilitar el proceso de cambiar tanto la collation por defecto establecida en una determinada tabla de base de datos, como generar todas las consultas requeridas para cambiar la collation de las tablas ya existentes.

Para cambiar la configuración de la collation base que tiene una base de datos ya creada podemos usar la siguiente consulta, la cual podemos ejecutarla desde la opcion “SQL”.

ALTER DATABASE nombre_bd CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;

consulta collation base de datos

En el apartado que marca como “nombre_bd” debemos reemplazarlo por el nombre exacto de nuestra base de datos.

Esta consulta, si bien cambiará el método de cotejamiento que tiene la base de datos, no cambiará la collation configurada en las tablas independientes.

Por otro lado, el tipo de collation utilizada en este caso, la “utf8mb4” es un tipo de intercalación que ha sido adaptado como un estándar desde la versión de WordPress 4.2.0.

Si lo que deseamos es cambiar la collation de multiples tablas en una determinada base de datos y no queremos realizar este proceso manual, vamos a emplear la siguiente consulta la cual nos va a generar de forma automatica cada una de las consultas a cada tabla para que luego las podamos ejecutar en lote.

SELECT CONCAT("ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;")
FROM information_schema.TABLES
WHERE TABLE_SCHEMA="nombre_bd";

consulta generadora sql

En este caso, solo bastará con cambiar el apartado marcado como “nombre_bd” por el nombre exacto de nuestra base de datos.

Al ejecutar la consulta nos va a arrojar todas las consultas necesarias para cambiar la collation de cada una de las tablas que componen la base de datos definida.

Lo que debemos hacer ahora es copiar todas estas consultas y ejecutarlas nuevamente en el campo del apartado SQL, para visualizar todo de forma implicita sugerimos de que desde el apartado de opciones se marque la casilla de “Textos completos” y “Mostrar todo”.

consultas generadas sql

Al momento de incluir todas nuestras nuevas consultas generadas debemos agregar un código previo para evitar errores en el procesar los cambios de todas estas tablas.

SET sql_mode = '';

consulta a tablas lista

Puede que se marquen algunos errores de sintaxis, pero son preventivos. Una vez ejecutemos la consulta podremos validar si los cambios se han ejecutado de forma satisfactoria.

nueva collation tablas

 Otros métodos a validar

 

Actualizar WooCommerce y plugins: debemos asegurarnos de siempre contar con tener instalada la última versión de WooCommerce y todos los plugins relacionados.

Las nuevas versiones pueden incluir correcciones para este tipo de errores.

Buscar y corregir consultas problemáticas: si el problema está relacionado con un plugin o tema personalizado, primero que nada debemos identificarlo para luego proseguir a corregir las consultas que están causando el conflicto de collations.

Restaurar una copia de seguridad: si nada de lo anterior ha parecido solventar el error de Illegal mix of collations en WooCommerce, como última opción, podemos restaurar la base de datos desde una copia de seguridad anterior y volver a configurar WooCommerce.

Es importante considerar que al cambiar las collations de las tablas puede afectar el orden de clasificación de los datos existentes, por lo que se recomienda realizar una copia de seguridad completa de la base de datos antes de realizar cualquier cambio, como hemos citado al inicio de este apartado.

Por otro lado, este tipo de ajustes lo ideal sería ejecutarlos en un entorno de prueba o desarrollo antes de aplicarlos en un sitio web en producción.

 Solucionar error Illegal mix of collations en WooCommerce con un plugin

 

Si los métodos explicados en el apartado anterior parecen muy complicados o invasivos, para nuestra suerte siempre existe un plugin para cualquier situación y esta no es la excepción.

Database Collation Fix

(Visita el plugin haciendo clic en la imagen ↑)

El plugin Database Collation Fix se encarga de convertir las tablas de la base de datos que utilizan los algoritmos de Collation “utf8mb4_unicode_520_ci” o “utf8_unicode_520_ci” a una collation más portable “utf8mb4_unicode_ci”.

Entre sus funciones, también modifica cualquier declaración de collation específica de columna, no solo la collation predeterminada de la tabla. Esto significa que una vez que el plugin está activo, todas las nuevas tablas que puedan generarse por nuevos complementos serán convertidas automáticamente al algoritmo de collation más portable y actualizado.

La herramienta se especializa en convertir las tablas y columnas de la base de datos de nuestro sitio en WordPress para usar el algoritmo de collation “utf8mb4_unicode_ci”. Esto se puede modificar a cualquier otro algoritmo de collation que queramos actualizando el archivo wp-config.php y agregando o cambiando la siguiente configuración:

define('DB_COLLATE', 'utf8_general_ci');

Es posible utilizar “utf8_general_ci” u “utf8” o cualquier otro algoritmo de collation compatible con nuestra base de datos.

El plugin una vez instalado tendremos una nueva opción en el menu lateral del escritorio de WordPress desde “Herramientas -> Collation Fix”.

Desde esta vista podremos ejecutar la conversión de la collation actual de las tablas a la nueva que definiremos en el selector disponible.

Solo bastará con escoger el método de algoritmo de colación por el cual vamos a realizar el cambio y ejecutar la acción desde el botón “Fix Database Collation”.

plugin Database Collation Fix

  Conclusión

 

El error Illegal mix of collations en WooCommerce puede generar preocupación, pero su solución es más sencilla de lo que parece.

Aunque en casos específicos este error podría tener consecuencias mayores, es esencial abordarlo para asegurar el correcto funcionamiento de la búsqueda y filtrado de productos.

Además, un conflicto de collations puede ocasionar inconsistencias en los datos, como una incorrecta ordenación de productos, nombres de clientes o direcciones. Esto puede derivar en errores críticos, como pedidos incorrectos, direcciones de envío erróneas e incluso pérdida de datos valiosos, lo que afectaría seriamente la integridad y confiabilidad de la tienda.

Por otro lado, si no se soluciona este error, podría resultar en fallas inesperadas, comportamientos incorrectos y períodos de inactividad en WooCommerce y sus plugins asociados.

Sin duda, el error Illegal mix of collations en WooCommerce no debe ser ignorado y debe ser tratado como una prioridad para mantener la estabilidad, confiabilidad y rendimiento óptimo de nuestro sitio web.

También te puede interesar:

¿Te ha resultado útil este artículo?

Black Friday 2024