索引已由另一個處理序鎖定

本文討論Adobe Commerce中常見的索引問題,該問題導致索引被其他程式鎖定並跳過。

受影響的產品和版本

  • Adobe Commerce 2.X

問題

在您的CLI中完整重新索引期間,Adobe Commerce會提供錯誤訊息: 'Index被另一個重新索引程式鎖定。 正在跳過。' ​換句話說,當處理程式或索引型別鎖定時,您就無法重新索引該特定鎖定的索引型別。 重新索引將一律跳過該索引型別。

原因

如果前一個索引未成功完成,則會發生此錯誤。 可能的原因如下:

  • 其他程式或使用者已中斷該程式。
  • 記憶體限制。
  • MySQL錯誤,例如逾時。
  • 重新索引期間發生嚴重的PHP錯誤。

重現問題的步驟

  1. 例如,假設 bash cataloginventory_stock 索引型別已鎖定。
  2. 當您嘗試執行CLI命令來重新索引所有資料時 bash php bin/magento indexer:reindex ,您會取得下列輸出結果: bash customer_grid index has been rebuilt successfully in 00:00:09 catalog_category_product index has been rebuilt successfully in 00:00:07 catalog_product_category index has been rebuilt successfully in 00:00:00 catalogrule_rule index has been rebuilt successfully in 00:00:05 catalog_product_attribute index has been rebuilt successfully in 00:00:04 cataloginventory_stock index is locked by another reindex process. Skipping. catalog_product_price index has been rebuilt successfully in 00:00:01 catalogrule_product has been rebuilt successfully in 00:00:00 catalogsearch_fulltext index has been rebuilt successfully in 00:00:01
  3. 如上所示, bash cataloginventory_stock 已略過索引程式。

解決方案

您必須重設索引狀態,然後嘗試執行新的重新索引程式。 對於重設索引狀態,您需要執行命令:

bin/magento indexer:reset <index identifier>

如果您不確定索引識別碼(程式碼)是什麼,可以使用命令列出它們:

bin/magento indexer:info

為了完整起見,以下提供原生索引的所有可能組合:

bin/magento indexer:reset design_config_grid;
bin/magento indexer:reset customer_grid;
bin/magento indexer:reset catalog_category_product;
bin/magento indexer:reset catalog_product_category;
bin/magento indexer:reset catalogrule_rule;
bin/magento indexer:reset catalog_product_attribute;
bin/magento indexer:reset cataloginventory_stock;
bin/magento indexer:reset catalog_product_price;
bin/magento indexer:reset catalogrule_product;
bin/magento indexer:reset catalogsearch_fulltext;

相關閱讀

在我們的支援知識庫中:

在我們的使用手冊中:

在我們的開發人員檔案中:

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