Plusieurs lignes de la base de données pour la même entité

Cet article fournit une solution au problème où il existe plusieurs lignes pour le même ID d’entité dans la base de données.

Description description

Produits et versions concernés

Adobe Commerce (Toutes les versions)

Problème

Plusieurs lignes correspondent au même ID d'entité dans la base de données.

Par exemple, après réception d'une liste d'enregistrements avec des identifiants d'entité en double lorsque vous exécutez cette requête :

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

$entityID = ID de la catégorie/du produit/de la règle de prix de panier/de la règle de prix de catalogue/de la page CMS.

Entité
$entityTable
$column
Catégorie/Produit
catalog_category_entity / catalog_product_entity
entity_id
Règle de prix du panier/Règle de prix du catalogue
salesrule / catalogrule
rule_id
Page CMS
cms_page
page_id

Cause

Il s’agit du comportement attendu. Plusieurs lignes sont créées par la fonctionnalité d’évaluation de contenu.

Si vous spécifiez une date de début sans date de fin, il y aura au moins deux lignes avec le même ID d’entité/règle/page. Une ligne indique l’état d’origine de l’entité (la ligne dans laquelle created_in=1 ), et une ligne indique la *Fin de la mise à jour planifiée*.

Si vous spécifiez une date de début avec une date de fin, il y aura au moins trois lignes avec le même ID d’entité/règle/page. Une ligne indique l’état d’origine de l’entité (la ligne dans laquelle created_in=1 ), une ligne correspond au *Début de la mise à jour planifiée* et une ligne correspond au *Fin de la mise à jour planifiée*.

Par exemple, dans cette requête :

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

Les valeurs created_in et updated_in doivent suivre le modèle suivant : La valeur created_in de la ligne active est égale à la valeur updated_in de la ligne précédente. En outre, la première ligne doit contenir created_in = 1 et la dernière ligne doit contenir updated_in = 2147483647. (S’il n’y a qu’une seule ligne, vous devez voir created_in=1 et updated_in=2147483647).

Pourquoi la deuxième entrée de la base de données (et toutes les suivantes) apparaît-elle dans la base de données pour la même entité ?

Le deuxième enregistrement de la base de données (et, éventuellement, les suivants) pour l'entité concernée indique qu'il y a eu des mises à jour de l'évaluation de contenu planifiées à l'aide du module Magento_Staging, ce qui crée un enregistrement supplémentaire pour une entité dans les tables respectives.

Un problème ne se produit que si les enregistrements ont les mêmes valeurs pour les colonnes created_in ou updated_in.

Résolution resolution

Il s’agit du comportement attendu qui ne provoquera des problèmes que s’il existe des incohérences entre les lignes.

Lecture connexe

Les modifications apportées aux catégories ne sont pas enregistrées dans notre base de connaissances d’assistance

Recommandations relatives à la modification des tables de base de données dans le manuel Commerce Implementation Playbook

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