資料庫中相同實體的多個資料列
本文針對資料庫中相同實體 ID 有多個資料列的問題提供解決方案。
說明 description
受影響的產品和版本
Adobe Commerce (所有版本)
問題
資料庫中的相同實體ID有多個資料列。
例如,當您執行此查詢時,在收到具有重複實體ID的記錄清單之後:
SELECT * FROM $entityTable WHERE $column = <$entityID> ORDER BY created_in;
其中類別/產品/購物車價格規則/目錄價格規則/CMS頁面的$entityID = ID。
實體
$entityTable
$欄
類別/產品
catalog_category_entity / catalog_product_entity
entity_id
購物車價格規則/目錄價格規則
salesrule /目錄規則
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;
row_id
entity_id
created_in
updated_in
2049
483
1
1540837826
483
483
1540837826
1540837842
2052
483
1540837826
2147483647
2051
483
1540837842
2147483647
created_in和updated_in值應遵循此模式:目前列的created_in值等於前一列的updated_in值。 此外,第一列應包含created_in = 1,最後一列應包含updated_in = 2147483647。 (如果只有一列,您必須看到created_in=1和updated_in=2147483647)。
為什麼相同實體的第二個DB專案(以及所有後續的專案)出現在DB中?
受影響實體的第二筆DB記錄(可能還有下一筆記錄)表示已使用Magento_Staging模組排定內容中繼更新,這會在個別表格中為實體建立額外的記錄。
只有當記錄的created_in或updated_in欄具有相同的值時,才會發生問題。
解決方法 resolution
這是預期中的行為,只有在列之間有差異時,才會導致問題。
相關閱讀
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f