Plusieurs lignes dans 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.
Produits et versions concernés :
- Adobe Commerce (toutes versions)
Problème
Il existe plusieurs lignes pour le même ID d’entité dans la base de données.
Par exemple, après avoir reçu une liste d’enregistrements avec des identifiants d’entité en double lors de l’exécution de cette requête :
SELECT * FROM $entityTable WHERE $column = <$entityID> ORDER BY created_in;
Où $entityID = ID
de la page CMS/règle de prix de catégorie/produit/panier/règle de prix de catalogue/règle de prix de catalogue
Cause
Il s’agit du comportement attendu. Les différentes 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é/de règle/de page. Une ligne indique l’état d’origine de l’entité (la ligne dans laquelle
created_in=1
) et une autre 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é/de règle/de 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 à la 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;
- Les valeurs
created_in
etupdated_in
doivent suivre ce modèle : la valeurcreated_in
de la ligne actuelle est égale à la valeurupdated_in
de la ligne précédente. En outre, la première ligne doit contenircreated_in = 1
et la dernière ligne doit contenirupdated_in = 2147483647
. (S’il n’y a qu’une seule ligne, vous devez voircreated_in=1
etupdated_in=2147483647
).
Pourquoi la deuxième entrée DB (et toutes les entrées suivantes) apparaît-elle dans DB pour la même entité ?
- Le deuxième enregistrement DB (et, éventuellement, les suivants) pour l’entité affectée signifie qu’il y a eu des mises à jour d’é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 se produirait uniquement si les enregistrements ont les mêmes valeurs pour les colonnes created_in
ou updated_in
.
Solution
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 de l’assistance
- Dupliquer les entrées dans la table du catalogue après avoir modifié la date de fin d'une mise à jour de planning dans notre base de connaissances de support
- Bonnes pratiques pour la modification des tables de base de données dans le manuel de mise en oeuvre de Commerce