Più righe nel database per la stessa entità

Questo articolo fornisce una soluzione al problema relativo alla presenza di più righe per lo stesso ID entità nel database.

Descrizione description

Prodotti e versioni interessati

Adobe Commerce (tutte le versioni)

Problema

Nel database sono presenti più righe per lo stesso ID entità.

Ad esempio, dopo aver ricevuto un elenco di record con ID entità duplicati quando esegui questa query:

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

Dove $entityID = ID di categoria/prodotto/regola prezzo carrello/regola prezzo catalogo/pagina CMS.

Entità
$entityTable
$column
Categoria/Prodotto
catalog_category_entity / catalog_product_entity
entity_id
Regola prezzo carrello/Regola prezzo catalogo
salesrule/catalogrule
rule_id
Pagina CMS
cms_page
page_id

Causa

Questo è il comportamento previsto. La funzionalità di gestione temporanea dei contenuti crea più righe.

Se specifichi una data di inizio senza una data di fine, ci saranno almeno due righe con lo stesso ID entità/regola/pagina. Una riga indica lo stato originale dell'entità (la riga in cui created_in=1 ) e una riga indica *Fine dell'aggiornamento pianificato*.

Se specifichi una data di inizio con una data di fine, ci saranno almeno tre righe con lo stesso ID entità/regola/pagina. Una riga indica lo stato originale dell'entità (la riga in cui created_in=1 ), una riga indica il *Inizio dell'aggiornamento pianificato* e una riga indica il *Fine dell'aggiornamento pianificato*.

Ad esempio, in questa query:

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
update_in
2049
483
1
1540837826
483
483
1540837826
1540837842
2052
483
1540837826
2147483647
2051
483
1540837842
2147483647

I valori created_in e updated_in devono seguire questo schema: il valore created_in della riga corrente è uguale al valore updated_in della riga precedente. Inoltre, la prima riga deve contenere created_in = 1 e l'ultima riga updated_in = 2147483647. Se è presente una sola riga, è necessario visualizzare created_in=1 e updated_in=2147483647.

Perché la seconda voce del database (e tutte le successive) viene visualizzata nel database per la stessa entità?

Il secondo record del database (ed eventualmente i successivi) per l'entità interessata indica che sono stati pianificati aggiornamenti di gestione temporanea del contenuto tramite il modulo Magento_Staging, che crea un record aggiuntivo per un'entità nelle rispettive tabelle.

Un problema si verifica solo se i record hanno gli stessi valori per le colonne created_in o updated_in.

Risoluzione resolution

Questo è il comportamento previsto e darà luogo a problemi solo in presenza di discrepanze tra le righe.

Lettura correlata

Le modifiche alle categorie non vengono salvate nella Knowledge Base di supporto

Best practice per la modifica delle tabelle del database nel playbook di implementazione di Commerce

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