同一实体的数据库中的多行
本文为数据库中的同一实体ID存在多行问题提供了解决方案。
受影响的产品和版本:
- Adobe Commerce(所有版本)
问题
数据库中同一实体ID有多个行。
例如,在运行此查询时收到具有重复实体ID的记录列表后:
SELECT * FROM $entityTable WHERE $column = <$entityID> ORDER BY created_in;
其中$entityID = ID
个类别/产品/购物车价格规则/目录价格规则/CMS页面。
实体
$entityTable
$column
类别/产品
catalog_category_entity/catalog_product_entity
entity_id
购物车价格规则/目录价格规则
salesrule/catalogrule
rule_id
CMS页面
cms_page
page_id
原因
这是预期行为。 多行由内容暂存功能创建:
-
如果指定的开始日期没有结束日期,则至少有两行具有相同的实体/规则/页面ID。 一行表示实体的原始状态(
created_in=1
所在的行),一行表示计划更新的 结束。 -
如果指定了带有结束日期的开始日期,则至少会有三行具有相同的实体/规则/页面ID。 一行表示实体的原始状态(
created_in=1
所在的行),一行表示计划更新的 开始,一行表示计划更新的 结束。
例如,在此查询中:
SELECT row_id, entity_id, created_in, updated_in FROM catalog_product_entity WHERE entity_id = 483 ORDER BY created_in;
created_in
和updated_in
值应遵循以下模式:当前行的created_in
值等于上一行的updated_in
值。 此外,第一行应包含created_in = 1
,最后一行应包含updated_in = 2147483647
。 (如果只有一行,则必须看到created_in=1
和updated_in=2147483647
)。
为什么第二个数据库条目(以及所有后续条目)会出现在同一实体的数据库中?
- 受影响实体的第二条DB记录(可能还有下一条)表示已使用
Magento_Staging
模块计划了内容暂存更新,这将为相应表中的实体生成额外记录。
仅当记录的created_in
或updated_in
列具有相同的值时,才会出现问题。
解决方案
这是预期行为,仅当行之间存在差异时,才会导致出现问题。
相关阅读
- 对类别的更改未保存在我们的支持知识库中
- 在编辑我们的支持知识库中计划更新的结束日期之后,目录表中出现重复条目
- 在Commerce实施行动手册中修改数据库表的最佳实践
recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a