Échec du déploiement lors du vidage du cache : erreur « Aucune commande n’est définie dans l’espace de noms « cache ».
Lorsque le déploiement échoue dans Adobe Commerce sur l’infrastructure cloud avec une erreur Aucune commande n’est définie dans l’espace de noms « cache », identifiez les lignes non valides restantes de ces configurations. Si vous n’avez qu’un seul site web, le deuxième test pour les sites web ne s’applique pas et vous n’avez qu’à tester les magasins.
Description description
Environnement
Adobe Commerce sur l’infrastructure cloud 2.4.x
Problème
Avertissement : sauvegardez d’abord la base de données, si vous le faites dans un site de production actif, avant d’effectuer ces étapes.
Cet article fournit une solution au problème d’échec de déploiement d’et d’apparition de l’une des erreurs du journal, comme suit :
[ 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.
Procédure à suivre :
Tentative de déploiement.
Résultats attendus :
Le déploiement a réussi.
Résultats réels :
Le déploiement échoue. Dans les journaux, une erreur de déploiement s’affiche avec un message similaire à : Il n’existe aucune commande dans l’espace de noms du cache.
Cause
La table core_config_data
contient des configurations pour un ID de magasin ou un ID de site web qui n’existe plus dans la base de données. Cela se produit lorsque vous avez importé une sauvegarde de base de données à partir d’une autre instance ou d’un autre environnement et que les configurations de ces étendues restent dans la base de données, même si les magasins/sites web associés ont été supprimés.
Résolution resolution
Si vous n’avez qu’un seul site web, le deuxième test pour les sites web ne s’applique pas et vous n’avez qu’à tester les magasins.
Pour résoudre ce problème, identifiez les lignes non valides restantes de ces configurations.
-
Envoyez le SSH au serveur et exécutez la commande suivante :
code language-none bin/magento
-
Le message d’erreur peut indiquer quelles lignes et tables restent dans la base de données à partir des sites supprimés. Par exemple, voici une erreur indiquant que le magasin demandé est introuvable :
code language-none ... In StoreRepository.php line 112: The store that was requested wasn't found. Verify the store and try again.
-
Exécutez cette requête MySQL pour vérifier que le magasin est introuvable, ce qui est indiqué par le message d’erreur à l’étape 2.
code language-none select distinct scope_id from core_config_data where scope='stores' and scope_id not in (select store_id from store);
-
Exécutez l’instruction MySQL suivante pour supprimer les lignes non valides :
code language-none delete from core_config_data where scope='stores' and scope_id not in (select store_id from store);
-
Exécutez à nouveau cette commande :
code language-none bin/magento
Si vous obtenez une erreur telle que celle ci-dessous, qui indique que le site web portant l’ID X demandé est introuvable, cela signifie que certaines configurations restent dans la base de données à partir du ou des sites web, ainsi que des magasins, qui ont été supprimés.
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.
Exécutez cette requête MySQL et vérifiez que le site web est introuvable :
code language-none select distinct scope_id from core_config_data where scope='websites' and scope_id not in (select website_id from store_website);
-
Exécutez cette instruction MySQL pour supprimer les lignes non valides de la configuration du site web :
code language-none delete from core_config_data where scope='websites' and scope_id not in (select website_id from store_website);