¿Qué es el error 'One or more indexers are invalid' en Magento 2?
El error 'One or more indexers are invalid' es uno de los problemas más frecuentes en Magento 2. Ocurre cuando los datos clave de la tienda, como los precios, las categorías o el inventario, no se sincronizan correctamente en la base de datos para su visualización rápida en el frontend. Esto suele suceder porque el sistema de indexación automática ha fallado o porque las tareas programadas (cron jobs) de tu servidor no se están ejecutando.
Causas comunes de este problema en Magento
- Tareas Cron desactivadas o mal configuradas: Magento necesita ejecutar procesos programados en segundo plano constantemente para mantener los datos al día.
- Interrupción de procesos: Un apagado inesperado del servidor o un límite de memoria PHP excedido durante una reindexación activa.
- Actualizaciones masivas de catálogo: Importaciones masivas de miles de productos que saturan los indexadores temporales.
Método 1: Reindexación manual a través de la CLI
La solución más rápida y directa para resolver esta advertencia es forzar la reindexación de forma manual utilizando la terminal de comandos (SSH) de tu servidor. Sigue estos pasos detallados:
- Conéctate a tu servidor mediante SSH e ingresa al directorio raíz donde está instalado tu Magento 2.
- Verifica el estado actual de todos tus indexadores con el siguiente comando:
php bin/magento indexer:status - Para forzar la reindexación completa de todos los módulos de tu tienda, ejecuta:
php bin/magento indexer:reindex - Una vez finalizado el proceso de reindexado, limpia la caché de Magento para aplicar los cambios en el frontend:
php bin/magento cache:flush
Método 2: Configurar y habilitar las tareas Cron de Magento
Si el error vuelve a aparecer al poco tiempo, significa que tu sistema de tareas programadas automáticas no está funcionando. Para automatizar este proceso y evitar futuros fallos de indexación, debes activar los crons:
- Accede a tu servidor por SSH utilizando el usuario propietario de los archivos del sitio web.
- Instala el programador de tareas en el sistema operativo ejecutando:
php bin/magento cron:install - Puedes verificar que las tareas programadas se hayan añadido correctamente en el crontab del sistema con el comando:
crontab -l - Para forzar una ejecución inmediata de los crons pendientes y reindexar los datos en segundo plano, ejecuta:
php bin/magento cron:run
Método 3: Incrementar el límite de memoria de PHP para CLI
En catálogos de productos grandes, el proceso de reindexación puede fallar silenciosamente por falta de memoria RAM asignada a los procesos de PHP en la consola. Sigue estos pasos para solucionarlo:
- Si el comando de reindexación normal falla por límite de memoria, ejecuta el proceso definiendo un límite de memoria superior directamente en la instrucción:
php -d memory_limit=2G bin/magento indexer:reindex - Para aplicar una solución permanente, edita el archivo
php.inique corresponde a la versión de PHP de tu CLI de tu servidor y eleva el parámetromemory_limita un valor mínimo de 2G.