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.
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. Le più righe vengono create dalla funzionalità di gestione temporanea del contenuto:
-
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 la 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 l'Inizio dell'aggiornamento pianificato e una riga indica la 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
eupdated_in
devono seguire questo schema: il valorecreated_in
della riga corrente è uguale al valoreupdated_in
della riga precedente. Inoltre, la prima riga deve contenerecreated_in = 1
e l'ultima rigaupdated_in = 2147483647
. Se è presente una sola riga, è necessario visualizzarecreated_in=1
eupdated_in=2147483647
.
Perché la seconda voce del database (e tutte quelle 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
.
Soluzione
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