如何解决Magento大型目录重新索引问题

时间:2014-02-12 09:07:00

标签: magento

我的产品目录中有大约70000种产品。每当我对产品级别进行一些更改时,都需要花费大量时间来更新更改。

2 个答案:

答案 0 :(得分:0)

检查&请按照以下步骤操作

  • 清除所有锁以重新索引定位var / locks目录并删除此目录下的所有文件。

  • 现在,登录到MysQSL / phpMyAdmin以运行以下MySQL查询(确保在提交此MySQL查询之前已完成备份):

  

删除cpop。* FROM catalog_product_option_price AS cpop INNER   JOIN catalog_product_option AS cpo ON cpo.option_id =   cpop.option_id WHERE cpo.type ='复选框'或cpo.type =   'radio'OR cpo.type ='drop_down';

  

删除cpotp。* FROM catalog_product_option_type_price AS cpotp
  INNER JOIN catalog_product_option_type_value AS cpotv ON   cpotv.option_type_id = cpotp.option_type_id INNER JOIN   catalog_product_option AS cpo ON cpotv.option_id = cpo.option_id
  在哪里cpo.type<> '复选框'AND cpo.type<> '收音机'和   cpo.type<> 'DROP_DOWN'

  • 重新登录Magento管理员面板,然后转到系统标签>索引管理再次点击索引,您将注意到不再出现此类错误。如果将来停止重新索引以解决Magento ReIndexing问题,您可以再次执行相同的步骤。

答案 1 :(得分:-1)

在magento数据库(mysql)和Solve Re-indexing Problem

中使用三步

第一步:

DROP TABLE IF EXISTS `index_process_event`;
DROP TABLE IF EXISTS `index_event`;
DROP TABLE IF EXISTS `index_process`;

第二步:

CREATE TABLE `index_event` (
`event_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`type` VARCHAR(64) NOT NULL,
`entity` VARCHAR(64) NOT NULL,
`entity_pk` BIGINT(20) DEFAULT NULL,
`created_at` DATETIME NOT NULL,
`old_data` MEDIUMTEXT,
`new_data` MEDIUMTEXT,
PRIMARY KEY (`event_id`),
UNIQUE KEY `IDX_UNIQUE_EVENT` (`type`,`entity`,`entity_pk`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

CREATE TABLE `index_process` (
`process_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`indexer_code` VARCHAR(32) NOT NULL,
`status` ENUM('pending','working','require_reindex') NOT NULL DEFAULT 'pending',
`started_at` DATETIME DEFAULT NULL,
`ended_at` DATETIME DEFAULT NULL,
`mode` ENUM('real_time','manual') NOT NULL DEFAULT 'real_time',
PRIMARY KEY (`process_id`),
UNIQUE KEY `IDX_CODE` (`indexer_code`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

第三步:

INSERT INTO `index_process`(`process_id`,`indexer_code`,`status`,`started_at`,`ended_at`,`mode`) VALUES (1,'catalog_product_attribute','pending','2010-02-13 00:00:00','2010-02-13 00:00:00','real_time'),(2,'catalog_product_price','pending','2010-02-13 00:00:00','2010-02-13 00:00:00','real_time'),(3,'catalog_url','pending','2010-02-13 19:12:15','2010-02-13 19:12:15','real_time'),(4,'catalog_product_flat','pending','2010-02-13 00:00:00','2010-02-13 00:00:00','real_time'),(5,'catalog_category_flat','pending','2010-02-13 00:00:00','2010-02-13 00:00:00','real_time'),(6,'catalog_category_product','pending','2010-02-13 00:00:00','2010-02-13 00:00:00','real_time'),(7,'catalogsearch_fulltext','pending','2010-02-13 00:00:00','2010-02-13 00:00:00','real_time'),(8,'cataloginventory_stock','pending','2010-02-13 00:00:00','2010-02-13 00:00:00','real_time');

CREATE TABLE `index_process_event` (
`process_id` INT(10) UNSIGNED NOT NULL,
`event_id` BIGINT(20) UNSIGNED NOT NULL,
`status` ENUM('new','working','done','error') NOT NULL DEFAULT 'new',
PRIMARY KEY (`process_id`,`event_id`),
KEY `FK_INDEX_EVNT_PROCESS` (`event_id`),
CONSTRAINT `FK_INDEX_EVNT_PROCESS` FOREIGN KEY (`event_id`) REFERENCES `index_event` (`event_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK_INDEX_PROCESS_EVENT` FOREIGN KEY (`process_id`) REFERENCES `index_process` (`process_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8;