Várias linhas no banco de dados para a mesma entidade

Este artigo fornece uma solução para o problema em que há várias linhas para a mesma ID de entidade no banco de dados.

Descrição description

Produtos e versões afetados

Adobe Commerce (todas as versões)

Problema

Há várias linhas para a mesma ID de entidade no banco de dados.

Por exemplo, depois de receber uma lista de registros com IDs de entidade duplicadas, ao executar esta consulta:

SELECT * FROM $entityTable WHERE $column = <$entityID> ORDER BY created_in;

Onde $entityID = ID da página de categoria/produto/regra de preço do carrinho/regra de preço do catálogo/CMS.

Entidade
$entityTable
$coluna
Categoria/produto
catalog_category_entity / catalog_product_entity
entity_id
Regra de Preço do Carrinho / Regra de Preço do Catálogo
regra de vendas / catálogo
rule_id
Página do CMS
cms_page
page_id

Causa

Esse é o comportamento esperado. Várias linhas são criadas pela funcionalidade Preparo de conteúdo.

Se você especificar uma data de início sem uma data de término, haverá pelo menos duas linhas com a mesma entidade/regra/ID de página. Uma linha indicará o estado original da entidade (a linha em que created_in=1 ), e uma linha indicará o *Fim da Atualização Agendada*.

Se você especificar uma data de início com uma data de término, haverá pelo menos três linhas com a mesma entidade/regra/ID de página. Uma linha indicará o estado original da entidade (a linha em que created_in=1 ), uma linha será para *Início da Atualização Agendada* e uma linha será para *Fim da Atualização Agendada*.

Por exemplo, nesta consulta:

SELECT row_id, entity_id, created_in, updated_in FROM catalog_product_entity WHERE entity_id = 483 ORDER BY created_in;
row_id
entity_id
created_in
updated_in
2049
483
1
1540837826
483
483
1540837826
1540837842
2052
483
1540837826
2147483647
2051
483
1540837842
2147483647

Os valores created_in e updated_in devem seguir este padrão: O valor created_in da linha atual é igual ao valor updated_in na linha anterior. Além disso, a primeira linha deve conter created_in = 1 e a última linha deve conter updated_in = 2147483647. (Se houver apenas uma linha, você deverá ver created_in=1 e updated_in=2147483647).

Por que a segunda entrada do BD (e todas as próximas) aparece no BD para a mesma entidade?

O segundo registro de BD (e, possivelmente, os próximos) da entidade afetada indica que houve atualizações de Preparo de Conteúdo agendadas usando o módulo Magento_Staging, o que cria um registro adicional para uma entidade nas respectivas tabelas.

Um problema só ocorrerá se os registros tiverem os mesmos valores para as colunas created_in ou updated_in.

Resolução resolution

Esse é o comportamento esperado e só levará a problemas se houver discrepâncias entre as linhas.

Leitura relacionada

As alterações nas categorias não estão sendo salvas na nossa base de dados de conhecimento de suporte

Práticas recomendadas para modificar tabelas de banco de dados no Manual de implementação do Commerce

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