Erro 404 em todas as páginas devido ao problema de preparo de conteúdo
Este artigo fornece uma correção para o problema do Adobe Commerce no local e do Adobe Commerce na infraestrutura em nuvem, em que você recebe um erro 404 ao acessar qualquer página da loja ou o administrador do Commerce.
Produtos e versões afetados
- Adobe Commerce no local 2.2.x, 2.3.x
- Adobe Commerce na infraestrutura em nuvem 2.2.x, 2.3.x
Problema
O acesso a qualquer página da loja ou ao Administrador resulta no erro 404 (a página "Ops, nossa má…") após executar operações com atualizações programadas para ativos de conteúdo da loja usando Preparo de conteúdo (atualizações para ativos de conteúdo de armazenamento agendadas usando o Magento_Módulo de preparo). Por exemplo, você pode ter excluído um Produto com uma atualização programada ou removido a data final da atualização programada.
Um ativo de conteúdo de armazenamento inclui:
- Produto
- Categoria
- Regra de preço de catálogo
- Regra de preço do carrinho
- Página CMS
- Bloco CMS
- Widget
Alguns cenários são discutidos na seção Causa abaixo.
Causa
A variável flag
A tabela no banco de dados (DB) contém links inválidos para a variável staging_update
tabela.
O problema está relacionado ao preparo de conteúdo. Abaixo estão dois cenários específicos; observe que pode haver mais situações que acionam o problema.
Cenário 1: Excluindo um ativo de conteúdo de armazenamento que:
- tem uma atualização agendada com o Preparo de conteúdo
- a atualização tem uma data final (ou seja, a data de expiração após a qual o ativo atualizado reverte para a versão anterior)
- a data final da atualização está no passado
Ao mesmo tempo, o problema pode não ocorrer se um ativo excluído não tiver uma data final para a atualização agendada.
Cenário 2: Removendo a data/hora final de uma atualização agendada.
Identificar se o problema está relacionado
Para identificar se o problema que você está enfrentando é o descrito neste artigo, execute a seguinte consulta de BD:
SELECT f.flag_data >'$.current_version' as flag_version, (su.id IS NOT NULL) as update_exists
-> FROM flag f
-> LEFT JOIN staging_update su
-> ON su.id = f.flag_data >'$.current_version'
-> WHERE flag_code = 'staging';
Se a consulta retornar uma tabela em que update_exists
é "0", então um link inválido para a variável staging_update
existe no banco de dados e as etapas descritas na seção Seção Solução O ajudará a resolver o problema. Veja a seguir um exemplo do resultado da query com update_exists
valor igual a "0":
Se a consulta retornar uma tabela em que update_exists
for "1" ou um resultado vazio, significa que o problema não está relacionado às atualizações de preparo. Veja a seguir um exemplo do resultado da query com update_exists
valor igual a "1":
Nesse caso, você pode consultar a Solução de problemas de site inativo para obter ideias de solução de problemas.
Solução
-
Execute a seguinte consulta para excluir o link inválido para o
staging_update
tabela:code language-sql DELETE FROM flag WHERE flag_code = 'staging';
-
Aguarde a execução do trabalho cron (é executado em até cinco minutos, se configurado corretamente) ou execute-o manualmente, se você não tiver o cron configurado.
O problema deve ser resolvido logo após a correção do link inválido. Se o problema persistir, enviar um tíquete de suporte.