Falha na implantação na liberação de cache: erro "Não há comandos definidos no namespace do ‘cache’"

Quando a implantação falha no Adobe Commerce na infraestrutura de nuvem com um Não há comandos definidos no erro de namespace do ‘cache’, identifique as linhas inválidas restantes dessas configurações. Se você tiver apenas um site, o segundo teste para os sites não se aplica e você só precisa testar as lojas.

Descrição description

Ambiente

Adobe Commerce na infraestrutura em nuvem 2.4.x

Problema

Aviso: faça backup do banco de dados primeiro, se você estiver fazendo isso em um site de Produção ativo, antes de executar essas etapas.

Este artigo fornece uma solução para o problema que ocorre quando a implantação falha e um dos erros no log tem esta aparência:

[ 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.

Etapas a serem reproduzidas:

Tentativa de implantação.

Resultados esperados:

Implantação bem-sucedida.

Resultados reais:

Você não implantou com êxito. Nos logs, você vê um erro de implantação com uma mensagem semelhante a: Não há comandos no namespace de cache.

Causa

A tabela core_config_data contém configurações para uma ID de loja ou ID de site que não existe mais no banco de dados. Isso ocorre quando você importa um backup de banco de dados de outra instância/ambiente e as configurações desses escopos permanecem no banco de dados, mesmo que os armazenamentos/sites associados tenham sido excluídos.

Resolução resolution

Se você tiver apenas um site, o segundo teste para os sites não se aplica e você só precisa testar as lojas.

Para resolver esse problema, identifique as linhas inválidas restantes dessas configurações.

  1. Adicione SSH ao servidor e execute este comando:

    code language-none
    bin/magento
    
  2. A mensagem de erro pode indicar quais linhas e tabelas permanecem no banco de dados a partir de sites excluídos. Por exemplo, o seguinte erro indica que o armazenamento solicitado não foi encontrado:

    code language-none
    ...
        In StoreRepository.php line 112:
    
        The store that was requested wasn't found. Verify the store and try again.
    
  3. Execute esta consulta do MySQL para verificar se o armazenamento não foi encontrado, o que é indicado pela mensagem de erro na etapa 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);
    
  4. Execute a seguinte instrução MySQL para excluir as linhas inválidas:

    code language-none
    delete from core_config_data where scope='stores' and scope_id not in (select store_id from store);
    
  5. Execute este comando novamente:

    code language-none
    bin/magento
    

    Se você receber um erro como o abaixo, que indica que o site com a ID X solicitada não foi encontrado, você tem configurações restantes no banco de dados do(s) site(s), bem como da(s) loja(s), que foram excluídas.

    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.
    

    Execute esta consulta do MySQL e verifique se o site não pode ser encontrado:

    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);
    
  6. Execute esta instrução MySQL para excluir as linhas inválidas da configuração do site:

    code language-none
    delete from core_config_data where scope='websites' and scope_id not in (select website_id from store_website);
    

Leitura relacionada

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f