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 de nuvem, em que você recebe um erro 404 ao acessar qualquer página da loja ou o Commerce Admin.
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, nossas más…") após executar operações com atualizações agendadas para ativos de conteúdo de loja usando Armazenamento temporário (atualizações para ativos de conteúdo de loja agendadas usando o módulo Magento_Armazenamento temporário). 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 do CMS
- Bloco do CMS
- Widget
Alguns cenários são discutidos na seção Causa abaixo.
Causa
A tabela flag
no banco de dados contém links inválidos para a tabela staging_update
.
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: exclusão de um ativo de conteúdo de repositório 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 o valor update_exists
é "0", então existe um link inválido para a tabela staging_update
em seu banco de dados, e as etapas descritas na seção Solução ajudarão a resolver o problema. Este é um exemplo do resultado da consulta com o valor update_exists
igual a "0":
Se a consulta retornar uma tabela em que o valor update_exists
é "1" ou um resultado vazio, significa que o problema não está relacionado às atualizações de preparo. Este é um exemplo do resultado da consulta com o valor update_exists
igual a "1":
Nesse caso, você pode consultar o Solucionador 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 a tabela
staging_update
:code language-sql DELETE FROM flag WHERE flag_code = 'staging';
-
Aguarde até que o trabalho cron seja executado (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, envie um tíquete de suporte.
Leitura relacionada
Práticas recomendadas para modificar tabelas de banco de dados no Manual de implementação do Commerce