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.
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;
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