Error de implementación al vaciar la caché: Error "No hay comandos definidos en el área de nombres "caché""
Este artículo proporciona una solución para el problema cuando la implementación falla y uno de los errores del registro tiene este aspecto:
[YEAR-DAYTIME] ERROR: [127] The command "php ./bin/magento cache:flush --ansi --no-interaction" failed.
There are no commands defined in the "cache" namespace.
...
W: There are no commands defined in the "cache" namespace.
Productos y versiones afectados
Adobe Commerce en la infraestructura en la nube 2.4.x
Problema
Pasos a seguir:
Intento de implementación.
Resultados esperados:
Se ha implementado correctamente.
Resultados reales:
No se ha implementado correctamente. En los registros ve un error de implementación con un mensaje similar al siguiente No hay comandos en el espacio de nombres de la caché.
Causa
La tabla core_config_data
contiene configuraciones para un identificador de tienda o sitio web que ya no existe en la base de datos. Esto ocurre cuando ha importado una copia de seguridad de base de datos desde otra instancia o entorno y las configuraciones de esos ámbitos permanecen en la base de datos aunque se hayan eliminado los almacenes o sitios web asociados.
Solución
Si solo ha tenido un sitio web, no se aplica la segunda prueba para los sitios web y solo necesita probar las tiendas.
Para resolver este problema, identifique las filas no válidas que quedan en esas configuraciones.
-
SSH al servidor y ejecute este comando:
bin/magento
-
El mensaje de error puede indicar qué filas y tablas permanecen en la base de datos de sitios eliminados. Por ejemplo, a continuación se muestra un error que indica que no se encontró el almacén solicitado:
code language-... In StoreRepository.php line 112: The store that was requested wasn't found. Verify the store and try again.
-
Ejecute esta consulta MySQL para comprobar que no se encuentra el almacén, lo que se indica mediante el mensaje de error del paso 2.
code language-sql select distinct scope_id from core_config_data where scope='stores' and scope_id not in (select store_id from store);
-
Ejecute la siguiente instrucción MySQL para eliminar las filas no válidas:
code language-sql delete from core_config_data where scope='stores' and scope_id not in (select store_id from store);
-
Vuelva a ejecutar este comando:
bin/magento
Si obtiene un error como el siguiente que indica que no se encontró el sitio web con el ID X solicitado, tiene configuraciones restantes en la base de datos desde sitios web, así como tiendas que se han eliminado.
code language-none In WebsiteRepository.php line 110: The website with id X that was requested wasn't found. Verify the website and try again.
Ejecute esta consulta MySQL y compruebe que no se encuentra el sitio web:
code language-sql select distinct scope_id from core_config_data where scope='stores' and scope_id not in (select store_id from store);
-
Ejecute esta instrucción MySQL para eliminar las filas no válidas de la configuración del sitio web:
code language-sql delete from core_config_data where scope='websites' and scope_id not in (select website_id from store_website);
Para confirmar que la solución funcionó, ejecute de nuevo el comando bin/magento
. Ya no debería ver los errores y puede implementarlos correctamente.
Lectura relacionada
- Solucionador de problemas de implementación de Adobe Commerce
- Comprobando el registro de implementación si la interfaz de usuario de Cloud tiene el error "log snipped"
- Prácticas recomendadas para modificar tablas de base de datos en el libro de estrategias de implementación de Commerce