Magento重新索引目录搜索索引锁定等待超时超时

时间:2014-03-14 10:03:05

标签: mysql magento indexing full-text-search

当我从后端重新索引目录搜索索引时,如果我的前端用户正在使用mysite中的搜索搜索某些内容,那么我会收到错误,例如

  

错误:SQLSTATE [HY000]:常规错误:1205锁定等待超时   超标;尝试重新启动交易

请有人告诉我如何克服这个问题。

3 个答案:

答案 0 :(得分:4)

这是一个Magento bug,自Magento 1.7以来就已存在。

重新索引catalogsearch_fulltext索引时,会为每个商店连续启动一个事务,执行以下操作:

  1. 重建catalogsearch_fulltext表格
  2. 重置搜索结果:更新catalogsearch_query表(将is_processed设置为0)并清除catalogsearch_result
  3. 从执行catalogsearch_query查询的那一刻起,前端的所有搜索都应该等到完整的索引过程完成(它们也会导致写入catalogsearch_querycatalogsearch_result表)。对于具有多个商店视图的大型目录,这可能需要相当长的时间,从而导致“超出锁定等待超时”错误。

    我已通过Bug跟踪器向Magento报告此问题:http://www.magentocommerce.com/bug-tracking/issue/index/id/933

    我认为没有必要将搜索结果存储在数据库中;相反,它们应该存储在注册表中,以便在单个请求期间可以多次引用它们。然后,在重建索引期间不再需要重置搜索结果。此外,对交易的需求也消失了。

    我没有实现这个解决方案,因为我们现在主要使用ElasticSearch。

答案 1 :(得分:0)

是的..这是因为1行InnonDB数据库表同时更新...

答案 2 :(得分:0)

尝试使用shell(SSH)重新索引目录搜索索引。

尝试从Magento根目录导航shell文件夹。 然后执行以下命令。

// To check the indexer status.
php -f indexer.php status 

// To reindex the indexer data.
php -f indexer.php reindex

// To check the any help in this indexer process.
php -f indexer.php help

使用SSH尝试此操作,它将帮助您重新索引所有数据。