Distribuzione non riuscita durante lo svuotamento della cache: errore "Nessun comando definito nello spazio dei nomi ‘cache’"
Quando la distribuzione non riesce in Adobe Commerce sull'infrastruttura cloud con un Nessun comando definito nell'errore "cache" dello spazio dei nomi, identifica le righe non valide rimaste da tali configurazioni. Se disponi di un solo sito web, il secondo test per i siti web non è applicabile e devi solo verificare la presenza di negozi.
Descrizione description
Ambiente
Adobe Commerce sull’infrastruttura cloud 2.4.x
Problema
Avviso: eseguire prima il backup del database, se l'operazione viene eseguita in un sito di produzione live, prima di eseguire questi passaggi.
Questo articolo fornisce una soluzione al problema che si verifica in caso di errore di distribuzione e uno degli errori nel registro è simile al seguente:
[ 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.
Passaggi da riprodurre:
Tentativo di distribuzione.
Risultati previsti:
Distribuzione completata.
Risultati effettivi:
La distribuzione non è riuscita. Nei registri viene visualizzato un errore di distribuzione con un messaggio simile al seguente: Non sono presenti comandi nello spazio dei nomi della cache.
Causa
La tabella core_config_data
contiene configurazioni per un ID archivio o un ID sito Web che non esiste più nel database. Ciò si verifica quando si importa un backup del database da un'altra istanza o da un altro ambiente e le configurazioni per tali ambiti rimangono nel database, anche se gli store o i siti Web associati sono stati eliminati.
Risoluzione resolution
Se disponi di un solo sito web, il secondo test per i siti web non è applicabile e devi solo verificare la presenza di negozi.
Per risolvere questo problema, identifica le righe non valide rimaste da tali configurazioni.
-
SSH al server ed eseguire il comando seguente:
code language-none bin/magento
-
Il messaggio di errore può indicare quali righe e tabelle rimangono nel database dai siti eliminati. Ad esempio, di seguito è riportato un errore che indica che l’archivio richiesto non è stato trovato:
code language-none ... In StoreRepository.php line 112: The store that was requested wasn't found. Verify the store and try again.
-
Eseguire questa query MySQL per verificare che non sia possibile trovare l'archivio, indicato dal messaggio di errore nel passaggio 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);
-
Eseguire la seguente istruzione MySQL per eliminare le righe non valide:
code language-none delete from core_config_data where scope='stores' and scope_id not in (select store_id from store);
-
Esegui di nuovo questo comando:
code language-none bin/magento
Se ricevi un errore simile a quello riportato di seguito che indica che il sito Web con ID X richiesto non è stato trovato, significa che sono state eliminate alcune configurazioni rimanenti nel database dai siti Web e dagli store.
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.
Eseguire questa query MySQL e verificare che il sito Web non sia stato trovato:
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);
-
Eseguire questa istruzione MySQL per eliminare le righe non valide dalla configurazione del sito Web:
code language-none delete from core_config_data where scope='websites' and scope_id not in (select website_id from store_website);