索引被另一个进程锁定

本文讨论了Adobe Commerce中的一个常见索引问题,该问题导致索引被其他进程锁定并跳过。

受影响的产品和版本

  • Adobe Commerce 2.X

问题

在CLI中进行完全重新索引时,Adobe Commerce会向您显示错误消息: '索引被另一个重新索引进程锁定。 正在跳过。 ​换句话说,当进程或索引类型被锁定时,您将无法重新索引该特定锁定的索引类型。 重新索引将始终跳过该索引类型。

原因

如果上一个索引未成功完成,则可能发生此错误。 可能的原因有:

  • 该进程被另一个进程或用户中断。
  • 内存限制。
  • 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