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", ou quando qualquer comando da CLI bin/magento falha com um erro como Entity_type inválido especificado: customer, geralmente indica dados de configuração inválidos ou ausentes no banco de dados (por exemplo, linhas de armazenamento/site órfãs ou definições eav_entity_type incompletas).

Use os testes neste artigo para identificar e corrigir essas linhas inválidas; se você tiver apenas um site, o segundo teste para sites não se aplica e você só precisa executar os testes para lojas e a tabela eav_entity_type.

Descrição description

Ambiente

Adobe Commerce na infraestrutura em nuvem 2.4.x

Problema

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] O comando "php ./bin/magento cache:flush —ansi —no-interaction" falhou. Não há comandos definidos no namespace "cache". … W: Não há comandos definidos no namespace "cache".

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

Há duas causas conhecidas para esse problema:

  1. Armazenamentos ou sites excluídos com dados de configuração órfãos. 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 normalmente ocorre quando você importou um backup de banco de dados de outra instância ou ambiente e as configurações desses escopos permanecem no banco de dados mesmo que os armazenamentos ou sites associados tenham sido excluídos.
  2. Tabela eav_entity_type vazia ou incompleta. A tabela eav_entity_type está vazia ou não tem uma ou mais definições entity_type necessárias. Ao executar qualquer comando CLI bin/magento, você verá um erro semelhante ao seguinte: Em Config.php linha 472: Entity_type inválido especificado: customer

Isso indica que a definição do tipo de entidade do cliente está ausente na tabela eav_entity_type (ou a tabela está completamente vazia). Essa situação geralmente também ocorre após a importação de um backup de banco de dados de outra instância ou ambiente em que a tabela eav_entity_type não foi exportada ou restaurada corretamente.

Resolução resolution

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

Use a solução apropriada abaixo, dependendo da causa que se aplica ao seu ambiente.

Solução para Causa 1: configurações órfãs para lojas/sites excluídos

Observação: se você tiver apenas um site, as verificações no nível do site não se aplicam e você só precisa testar as lojas.

Para resolver esse problema, identifique e remova as linhas inválidas deixadas das configurações para lojas ou sites que não existem mais.

  1. Adicione SSH ao ambiente do Adobe Commerce na infraestrutura da nuvem e execute o seguinte comando para exibir erros de configuração do site ou do armazenamento na superfície:

    bin/magento

  2. Verifique se há um erro de armazenamento ausente, pois a mensagem de erro pode indicar quais linhas e tabelas permanecem no banco de dados a partir de sites excluídos:

    No StoreRepository.php linha 112:

    O armazenamento solicitado não foi encontrado. Verifique o armazenamento e tente novamente.

  3. Execute a seguinte consulta MySQL para localizar linhas de configuração que apontem para armazenamentos inexistentes:

    SELECT DISTINCT scope_id FROM core_config_data WHERE scope = 'stores' AND scope_id NOT IN (SELECT store_id FROM store);

    Observação: execute as consultas SELECT primeiro, valide os resultados em um ambiente de não-Produção e siga o processo de gerenciamento de alterações antes de executar qualquer instrução DELETE.

  4. Após verificar os resultados, exclua as linhas órfãs de configuração de armazenamento:

    DELETE FROM core_config_data WHERE scope = 'lojas' AND scope_id NOT IN (SELECT store_id FROM store);

  5. Execute novamente bin/magento e verifique se há erros de site ausentes.

  6. Se você receber um erro indicando que o site solicitado com a ID X não foi encontrado, isso significa que também há configurações de nível de site órfãs:

    No WebsiteRepository.php linha 110:

    O site com a ID X solicitada não foi encontrado. Verifique o site e tente novamente.

  7. Execute a seguinte consulta MySQL para encontrar configurações para sites que não existem mais:

    SELECT DISTINCT scope_id FROM core_config_data WHERE scope = 'websites' AND scope_id NOT IN (SELECT website_id FROM store_website);

    Observação: execute primeiro as consultas SELECT, valide os resultados em um ambiente de não-produção e siga o processo de gerenciamento de alterações antes de executar qualquer instrução DELETE.

  8. Remova as linhas de configuração do site órfão:

    DELETE FROM core_config_data WHERE scope = 'websites' AND scope_id NOT IN (SELECIONE website_id FROM store_website);

    Depois de limpar essas linhas, execute a implantação novamente. Os comandos CLI relacionados ao cache agora devem ser reconhecidos e a implantação deve continuar com êxito.

Solução para Causa 2: entradas vazias ou ausentes na tabela de eav_entity_type

A tabela de banco de dados do Commerce eav_entity_type está vazia ou com uma ou mais linhas entity_type necessárias ausentes (por exemplo, customer). Isso geralmente acontece após a importação de um backup de banco de dados de outra instância ou ambiente em que a tabela eav_entity_type não foi exportada ou restaurada corretamente.

  1. Para validar o erro e o conteúdo da tabela, SSH para o servidor do Commerce ou container da nuvem. Execute o seguinte comando:

    bin/magento

  2. Confirme se o erro é o seguinte.

    Na linha 472 do Config.php:

    Entity_type inválido especificado: cliente

  3. Conecte-se ao banco de dados MySQL usado pelo Adobe Commerce no ambiente de infraestrutura de nuvem e inspecione a tabela eav_entity_type.

    SELECT entity_type_id, entity_type_code FROM eav_entity_type ORDER BY entity_type_id;

  4. Se essa consulta não retornar nenhuma linha, a tabela ficará vazia.

  5. Se não houver nenhuma linha com entity_type_code = 'customer' (ou o tipo de entidade mostrado no erro), esse tipo de entidade está ausente.

  6. Se a tabela estiver vazia ou não tiver o tipo de entidade mencionado no erro, restaure ou importe a tabela eav_entity_type de um backup válido obtido da mesma instância e versão do Commerce. Siga seus procedimentos de backup e restauração do MySQL ou consulte seu DBA para garantir que as seguintes condições sejam atendidas. A estrutura da tabela corresponde à versão atual do Commerce. Todos os tipos de entidade necessários (por exemplo, customer, catalog_product) estão presentes.

  7. Após a restauração, execute os seguintes comandos para verificar se o erro Entity_type inválido especificado não aparece mais:

    configuração bin/magento:upgrade cache bin/magento:flush

  8. Se esses comandos forem concluídos com êxito, tente a implantação novamente.

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