ACP2E-4603:目錄許可權產品重新索引會留下過時的許可權索引列和MySQL死結

ACP2E-4603修補程式修正目錄許可權產品重新索引導致現有許可權索引列未變更的問題,因此更新的類別許可權授予無法在產品上正確反映。 安裝Quality Patches Tool (QPT) 1.1.79時,即可使用此修補程式。 修補程式ID為ACP2E-4603。 請注意,此問題已排程在Adobe Commerce 2.4.9中修正。

受影響的產品和版本

已為Adobe Commerce版本建立修補程式:

  • Adobe Commerce (所有部署方法) 2.4.7-p3

與Adobe Commerce版本相容:

  • Adobe Commerce (所有部署方法) 2.4.6 - 2.4.7-p9
NOTE
此修補程式可能適用於發行版本為Quality Patches Tool的其他版本。 若要檢查修補程式是否與您的Adobe Commerce版本相容,請將magento/quality-patches套件更新至最新版本,並在Quality Patches Tool上檢查相容性:搜尋修補程式頁面。 使用修補程式ID作為搜尋關鍵字,以尋找修補程式。

問題

目錄許可權產品重新索引保持現有許可權索引列不變,因此更新的類別許可權授予無法在產品上正確反映。

要再現的步驟

  1. 啟用類別許可權:

    1. 登入管理員。
    2. 前往​Stores > Configuration
    3. 在​ Catalog ​下,選取​Catalog
    4. 展開​Category Permissions
    5. 將​ Enable ​設為​
    6. 儲存設定。
  2. 建立50個或更多客戶群組(選項A或選項B):

    1. 選項A — 管理員:​移至​Customers > Customer Groups​並選取​Add New。 輸入群組名稱(例如,ACSD70034_01)並選取預設稅捐類別,然後選取​Save。 重複建立50個或更多群組。
    2. 選項B (建議) — REST API:​傳送POST要求給/rest/V1/customerGroups,要求內文為{"group":{"code":"ACSD70034_01","taxClassId":0}}。 重複以建立50個群組(ACSD70034_01ACSD70034_50)。
  3. 在「管理員」中新增類別許可權:

    1. 前往​Catalog > Categories
    2. 編輯10-20個或更多類別以提高可重複性。
    3. 在每個類別中,捲動至​ Category Permissions ​並選取​Add Permission
    4. 選取網站(例如「主要網站」),然後指派先前建立的其中一個客戶群組。
    5. 視需要設定​Grant Catalog Category ViewGrant Product Price​和​Grant Checkout
    6. 選取​Save
    7. 建議的範圍:​建立較大的資料集(例如20個類別和20-50個客戶群組)以產生400-1,000個許可權列。
  4. 確定單一索引表格(預設):

    1. 前往「Stores > Configuration > Catalog > Catalog > Category Permissions」。
    2. 如果出現​ Dimensions ​或​Indexer Dimensions,請將其設定為​ (不是​客戶群組)以使用單一索引表。
  5. 從CLI使用平行執行緒執行重新索引:

    1. 匯出MAGE_INDEXER_THREADS_COUNT=4
    2. 執行php bin/magento indexer:reset catalogpermissions_category catalogpermissions_product
    3. 執行php bin/magento indexer:reindex catalogpermissions_category catalogpermissions_product
    4. 重複重設和重新索引命令5-10次,在平行執行期間重新產生死結。

預期結果

使用平行執行緒重新索引成功完成,而且更新的類別許可權授權在magento_catalogpermissions_index_product資料表中的產品上正確反映。

實際結果

重新索引期間間歇性地發生MySQL死結錯誤(1213),子處理序失敗,錯誤參考magento_catalogpermissions_index_replicamagento_catalogpermissions_index_product上的REPLACE INTO

即使重新索引完成且沒有錯誤,它也不會更新現有的許可權索引列,因此產品會繼續反映過時的類別許可權授予。

套用修補程式

若要套用個別修補程式,請根據您的部署方法使用下列連結:

相關閱讀

若要進一步瞭解Quality Patches Tool,請參閱:

recommendation-more-help
commerce-operations-help-tools