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中重新索引时发生的死锁错误。如果您在按照说明进行操作时遇到任何问题,请联系我们。