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.
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.
Causa
Esse é o comportamento esperado. As 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 o Início da Atualização Agendada e uma linha será para o 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;
- Os valores
created_in
eupdated_in
devem seguir este padrão: O valorcreated_in
da linha atual é igual ao valorupdated_in
na linha anterior. Além disso, a primeira linha deve contercreated_in = 1
e a última linha deve conterupdated_in = 2147483647
. (Se houver apenas uma linha, você deverá vercreated_in=1
eupdated_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 significa que houve atualizações de Preparo de Conteúdo agendadas usando o módulo
Magento_Staging
, que faz 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
.
Solução
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
- Entradas duplicadas na tabela de catálogo após a edição da data final de uma atualização de agendamento em 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