Varias filas en la base de datos para la misma entidad

Este artículo proporciona una solución al problema de que haya varias filas para el mismo ID de entidad en la base de datos.

Descripción description

Productos y versiones afectados

Adobe Commerce (todas las versiones)

Problema

Hay varias filas para el mismo ID de entidad en la base de datos.

Por ejemplo, después de recibir una lista de registros con ID de entidad duplicados al ejecutar esta consulta:

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

Donde $entityID = ID de categoría/producto/regla de precio del carro/regla de precio del catálogo/página de CMS.

Entidad
$entityTable
$column
Categoría/Producto
catalog_category_entity / catalog_product_entity
entity_id
Regla de precio del carro de compras/Regla de precio del catálogo
regla de ventas/catálogo
rule_id
Página de CMS
cms_page
page_id

Causa

Este es el comportamiento esperado. La funcionalidad Ensayo de contenido crea varias filas.

Si especifica una fecha de inicio sin una fecha de finalización, habrá al menos dos filas con la misma entidad, regla o ID de página. Una fila indicará el estado original de la entidad (la fila en la que created_in=1 ) y una fila indicará el *Fin de la actualización programada*.

Si especifica una fecha de inicio con una fecha de finalización, habrá al menos tres filas con la misma entidad, regla o ID de página. Una fila indicará el estado original de la entidad (la fila en la que created_in=1 ), una fila será para *Start of the Scheduled Update* y una fila será para *End of the Scheduled Update*.

Por ejemplo, en esta consulta:

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

Los valores created_in y updated_in deben seguir este patrón: el valor created_in de la fila actual es igual al valor updated_in de la fila anterior. Además, la primera fila debe contener created_in = 1 y la última fila debe contener updated_in = 2147483647. (Si solo hay una fila, debe ver created_in=1 y updated_in=2147483647).

¿Por qué aparece la segunda entrada de la base de datos (y todas las siguientes) en la base de datos de la misma entidad?

El segundo registro de base de datos (y, posiblemente, los siguientes) para la entidad afectada indica que se han programado actualizaciones de ensayo de contenido mediante el módulo Magento_Staging, lo que crea un registro adicional para una entidad en las tablas correspondientes.

Solamente se produciría un problema si los registros tienen los mismos valores para las columnas created_in o updated_in.

Resolución resolution

Este es el comportamiento esperado y solo provocará problemas si hay discrepancias entre las filas.

Lectura relacionada

Los cambios en las categorías no se están guardando en nuestra base de conocimiento de soporte

Prácticas recomendadas para modificar tablas de base de datos en el libro de estrategias de implementación de Commerce

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