404 Erro na loja assim que a atualização das programações de regra de preço de catálogo é executada
Este artigo fornece um patch e as etapas necessárias para corrigir o problema conhecido do Adobe Commerce 2.2.1 relacionado à obtenção de um erro 404 em todas as páginas iniciais da loja, depois que uma atualização de regra de preço de catálogo foi criada e sua hora de início foi editada posteriormente. Para corrigir o problema, você precisa aplicar o patch.
Problema
As páginas da vitrine eletrônica ficam indisponíveis, retornando o erro 404. O problema ocorre depois que a atualização da regra de preço do catálogo ativo vence, contanto que a data inicial desta atualização tenha sido editada após a criação inicial.
Etapas a serem reproduzidas:
- No Administrador do Commerce, crie uma nova Regra de preço de catálogo em Marketing > Promoções > Regra de preço de catálogo.
- Na grade Regra de Preço do Catálogo, clique em Editar, agendar uma nova Atualização e definir o Status como Ativo.
- Navegue até Conteúdo > Estágios de Conteúdo > Painel.
- Selecione a atualização criada recentemente e altere sua hora inicial.
- Salve as alterações.
Resultado esperado:
Quando a data inicial de Atualização se torna efetiva, a regra de preço de catálogo é aplicada com sucesso.
Resultado real:
Quando a data de início da Atualização entrar em vigor, todos os catálogos e produtos da loja ficarão indisponíveis, retornando o erro 404.
Solução
Para restaurar páginas de catálogo e usar totalmente a funcionalidade de atualizações de regras de preço de catálogo, é necessário instalar o patch, excluir a regra manualmente e no administrador e corrigir os links inválidos no banco de dados. Você também precisará recriar a regra de preço do catálogo.
Veja a seguir uma descrição detalhada das etapas necessárias:
- Aplicar o patch.
- No Administrador do Commerce, exclua a regra de preço do catálogo relacionada ao problema (em que a hora de início foi atualizada). Para fazer isso, abra a página de regras em Marketing > Promoções > Regra de Preço de Catálogo e clique em Excluir Regra.
- O acesso ao banco de dados exclui manualmente o registro relacionado da tabela
catalogrule
. - Corrija os links inválidos no banco de dados. Consulte o parágrafo relacionado para obter detalhes.
- No Administrador do Commerce em Marketing, vá para Promoções > Regra de preço de catálogo e crie a nova regra com a configuração necessária.
- Limpe o cache do navegador em Sistema > Gerenciamento de Cache.
- Verifique se os trabalhos cron estão configurados corretamente e podem ser executados com êxito.
Correção patch
O patch está anexado a este artigo. Para baixá-lo, role para baixo até o final do artigo e clique no nome do arquivo ou clique no link a seguir:
Versões compatíveis do Adobe Commerce:
A correção foi criada para:
- Adobe Commerce 2.2.1
O patch também é compatível (mas pode não resolver o problema) com as seguintes versões e edições do Adobe Commerce:
- Adobe Commerce na infraestrutura em nuvem 2.2.0 - 2.2.4
- Adobe Commerce no local 2.2.0 e 2.2.2 - 2.2.4
Como aplicar o patch
Para instruções, consulte Como aplicar um patch de compositor fornecido por Adobe em nossa base de dados de conhecimento de suporte.
Corrigir os links inválidos para preparo no BD fix_links
Siga as etapas a seguir para corrigir as linhas com links inválidos para a tabela staging_update
.
-
Verifique se os links inválidos para a tabela
staging_update
existem na tabelaflag
. Estes seriam registros ondeflag_code=staging
. -
Identifique a versão inválida da tabela
flag
usando a seguinte consulta:code language-sql SELECT flag_data FROM flag WHERE flag_code = 'staging';
-
Na tabela
staging_update
, selecione a versão existente que seja menor que a versão atual (inválida) e obtenha o valor da versão que seja dois números de volta. Você pode usá-la, não a versão anterior, para evitar a situação em que a versão anterior é a versão máxima na tabelastaging_update
que pode ser aplicada e ainda precisamos reaplicá-la.code language-sql SELECT id FROM staging_update WHERE id < %current_id% ORDER BY id DESC LIMIT 1, 1
A versão que você recebe em resposta é sua versão válida
id
. -
Para as linhas com links inválidos na tabela
flag
, defina os valores deflag_data
como dados que conterão uma ID de versão válida. Isso ajuda a salvar o desempenho na etapa de reindexação e permite evitar a reindexação de todas as entidades.code language-sql UPDATE flag SET flag_data=REPLACE(flag_data, '%invalid_id%', '%new_valid_id%') WHERE flag_code='staging';
Exemplo:
SELECT flag_data FROM flag WHERE flag_code = 'staging'; <code class="language-bash">Response < 2.2 version</code>
+-------------------------------------------------+
| flag_data |
+-------------------------------------------------+
| a:1:{s:15:"current_version";s:10:"1490005140";} |
+-------------------------------------------------+
Response from 2.2 version
+-------------------------------------------------+
| flag_data |
+-------------------------------------------------+
| {"current_version":"1490005140"} |
+-------------------------------------------------+
SELECT id FROM staging_update WHERE id < 1490005140 <code class="language-sql">ORDER BY id DESC LIMIT 1, 1</code>;
Response:
1490005138
UPDATE flag SET flag_data=REPLACE(flag_data, '1490005140', '1490005138') WHERE flag_code='staging';