資料庫中相同實體的多個資料列

本文針對資料庫中相同實體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/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;

multiple_rows_in_database.png

  • created_inupdated_in值應遵循此模式:目前列的created_in值等於前一列的updated_in值。 此外,第一列應包含created_in = 1,最後一列應包含updated_in = 2147483647。 (如果只有一列,您必須看到created_in=1updated_in=2147483647)。

為什麼同一實體的第二個DB專案(以及所有後續的專案)會出現在資料庫中?

  • 受影響實體的第二筆DB記錄(可能還有下一筆記錄)表示已使用Magento_Staging模組排定內容中繼更新,這會對個別表格中的實體產生額外記錄。

只有當記錄的created_inupdated_in欄具有相同的值時,才會發生問題。

解決方案

這是預期中的行為,只有在列之間有差異時,才會導致問題。

相關閱讀

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a