資料庫中相同實體的多個資料列
最後更新: 2025年10月2日
本文針對資料庫中相同實體 ID 有多個資料列的問題提供解決方案。
說明
受影響的產品和版本
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欄具有相同的值時,才會發生問題。
解決方法
這是預期中的行為,只有在列之間有差異時,才會導致問題。
相關閱讀
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f