当我从后端重新索引目录搜索索引时,如果我的前端用户正在使用mysite中的搜索搜索某些内容,那么我会收到错误,例如
错误:SQLSTATE [HY000]:常规错误:1205锁定等待超时 超标;尝试重新启动交易
请有人告诉我如何克服这个问题。
答案 0 :(得分:4)
这是一个Magento bug,自Magento 1.7以来就已存在。
重新索引catalogsearch_fulltext索引时,会为每个商店连续启动一个事务,执行以下操作:
catalogsearch_fulltext
表格catalogsearch_query
表(将is_processed设置为0)并清除catalogsearch_result
表从执行catalogsearch_query
查询的那一刻起,前端的所有搜索都应该等到完整的索引过程完成(它们也会导致写入catalogsearch_query
和catalogsearch_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尝试此操作,它将帮助您重新索引所有数据。