如何修复在Magento 2中重新索引时的死锁错误

Magento版本:2.1.9 
模式:Production
索引模式:Update on save

总产品:18k 
总客户:54k 
总订单:18k

开发人员尝试重新建立索引后,会生成exception.log文件,其中包含此文件中的以下错误。同时,服务器被卡住,需要重新启动。然后,该网站才可以照常运行。

“PDOException: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction”

那么,如何解决这个死锁错误以及手动重新编制索引的最佳方法?

解决方案:

有3个简单的步骤来处理这个Magento 2死锁错误:

    • 第1步:在本地打开数据库,然后运行SQL:

 

DROP TABLE `catalog_category_product_index`;
DROP TABLE `catalog_category_product_index_tmp`;


CREATE TABLE `catalog_category_product_index` (
  `category_id` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Category ID',
  `product_id` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Product ID',
  `position` int(11) DEFAULT NULL COMMENT 'Position',
  `is_parent` smallint(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Is Parent',
  `store_id` smallint(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Store ID',
  `visibility` smallint(5) UNSIGNED NOT NULL COMMENT 'Visibility'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Catalog Category Product Index';
ALTER TABLE `catalog_category_product_index`
  ADD PRIMARY KEY (`category_id`,`product_id`,`store_id`),
  ADD KEY `CAT_CTGR_PRD_IDX_PRD_ID_STORE_ID_CTGR_ID_VISIBILITY` (`product_id`,`store_id`,`category_id`,`visibility`),
  ADD KEY `CAT_CTGR_PRD_IDX_STORE_ID_CTGR_ID_VISIBILITY_IS_PARENT_POSITION` (`store_id`,`category_id`,`visibility`,`is_parent`,`position`);
CREATE TABLE `catalog_category_product_index_tmp` (
  `category_id` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Category ID',
  `product_id` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Product ID',
  `position` int(11) NOT NULL DEFAULT '0' COMMENT 'Position',
  `is_parent` smallint(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Is Parent',
  `store_id` smallint(5) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Store ID',
  `visibility` smallint(5) UNSIGNED NOT NULL COMMENT 'Visibility'
) ENGINE=MEMORY DEFAULT CHARSET=utf8 COMMENT='Catalog Category Product Indexer Temp Table';
ALTER TABLE `catalog_category_product_index_tmp`
  ADD KEY `CAT_CTGR_PRD_IDX_TMP_PRD_ID_CTGR_ID_STORE_ID` (`product_id`,`category_id`,`store_id`);

    • 第2步:尝试在本地重新索引

    • 步骤3:如果您可以在本地重新编制索引,然后再在服务器上重新编制索引

 

我们向您展示了3个步骤来解决在Magento CE 2.1.9中重新索引时发生的死锁错误。如果您在按照说明进行操作时遇到任何问题,请联系我们


上一篇:7种方法让你的Magento 2主题模板速度加快 下一篇:50种方法立即提升您的Magento网站性能
  • 版权声明:内容来自互联网不代表本站观点,2018-06-13发表于 magento教程栏目。
  • 转载请注明: 如何修复在Magento 2中重新索引时的死锁错误| magento教程 +复制链接