Introducción al problema de indexación en Magento 2
Uno de los dolores de cabeza más comunes para los administradores de tiendas online desarrolladas en Magento 2 es cuando los índices se quedan atascados en estado 'Pendiente' o 'Processing'. Esto provoca que los cambios en precios, stock y nuevos productos no se reflejen correctamente en el front-office, afectando directamente la experiencia de usuario y las ventas.
Causas principales del error de indexadores bloqueados
- Procesos cron inactivos o mal configurados en el servidor.
- Bloqueos en la base de datos (deadlocks o tablas marcadas como crashed).
- Límite de memoria PHP insuficiente durante la ejecución del proceso CLI.
- Interrupción previa de un comando de indexación manual.
Método 1: Reiniciar y forzar la reindexación mediante la CLI de Magento
La forma más rápida y efectiva de solucionar este inconveniente es utilizando la línea de comandos SSH de tu servidor. Sigue estos pasos:
- Accede a tu servidor mediante SSH con un usuario que tenga permisos para ejecutar comandos de Magento (por ejemplo, el usuario propietario de los archivos).
- Navega hasta la raíz de tu instalación de Magento:
cd /var/www/html/tu-tienda-magento - Verifica el estado actual de los indexadores ejecutando:
bin/magento indexer:info - Cambia el modo de indexación a 'Salida por lote' (Schedule) o 'Por procesamiento' (Realize) según prefieras, aunque para limpiar bloqueos se recomienda forzar una reindexación completa ejecutando:
bin/magento indexer:reindex
Método 2: Limpiar las tablas de la base de datos relacionadas con los indexadores
Si el comando anterior arroja errores o se queda congelado, es muy probable que existan bloqueos a nivel de base de datos en las tablas de control de índices.
- Accede a tu gestor de base de datos (phpMyAdmin o consola MySQL).
- Identifica y vacía (trunca) las siguientes tablas del sistema:
indexer_stateylock_violation. Puedes hacerlo con la siguiente consulta SQL:TRUNCATE TABLE indexer_state; - Vuelve a tu terminal SSH y limpia la caché de Magento para aplicar los cambios:
bin/magento cache:clean - Ejecuta nuevamente el comando de reindexación completa:
bin/magento indexer:reindex