Magento指数问题 - 无法重新索引

时间:2013-01-02 18:47:21

标签: magento indexing magento-1.6

我的Magento 1.6.2.0商店内的索引管理存在问题。基本上我不能让他们更新。状态显示为Processing,但它现在已经说了三个多星期了。

当我尝试重新索引时,我收到此消息Stock Status Index process is working now. Please try run this process later但后来又是3周了?所以看起来这个过程已经冻结,但我不知道如何重新启动。

有什么想法吗?

欢呼声

5 个答案:

答案 0 :(得分:31)

每当您启动索引过程时,Magento都会将锁定文件写入var/locks文件夹。

$ cd /path/to/magento
$ ls var/locks
index_process_1.lock    index_process_4.lock    index_process_7.lock
index_process_2.lock    index_process_5.lock    index_process_8.lock
index_process_3.lock    index_process_6.lock    index_process_9.lock

锁定文件阻止其他用户启动索引编制过程。但是,如果索引请求在完成之前超时或失败,则锁定文件将保持锁定状态。这可能就是发生在你身上的事了。我建议您检查锁定文件的最后修改日期,以确保其他人现在没有运行重新索引器,然后删除锁定文件。这将清理你的

  

股票状态指数流程现在正在运作。请稍后尝试运行此过程

错误。之后,一次运行一个索引器以确保每个索引器完成。

答案 1 :(得分:3)

Hello如果没有手动调用脚本,那么在根文件夹中创建一个文件并在其中编写此代码

require_once 'app/Mage.php';
umask( 0 );
Mage :: app( "default" );
$process = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_product_flat');
$process->reindexAll();

此代码手动索引您的magento有时会发生如果您的magento商店包含大量产品,则需要花费大量时间重新编制产品索引,这样当您可以从管理员转到索引管理时它会显示在处理阶段中进行一些索引,因此此代码可能会帮助您将处理阶段移至索引的准备阶段。

或者如果您拥有权限,也可以使用SSH进行索引。索引

也更快

答案 2 :(得分:2)

对于较新版本的magento,即2.1.3我必须使用此解决方案: http://www.elevateweb.co.uk/magento-ecommerce/magento-error-sqlstatehy000-general-error-1205-lock-wait-timeout-exceeded

如果您运行大量自定义脚本并在数据库连接有机会关闭之前终止脚本,则可能会发生这种情况

如果从CLI登录MySQL并运行命令

SHOW PROCESSLIST;

您将获得以下输出

+ --- + ------ + ------- + ------ + --- + - + --- + ------ + - - + ----- + + ----

| Id |用户|主持人| db |命令|时间|国家|信息| Rows_sent | Rows_examined | Rows_read |

+ --- + ------ + ------- + ------ + --- + - + --- + ------ + - - + ----- + + ----

| | 6794372 | DB_USER | 111.11.0.65:21532 | DB_NAME |睡觉| 3800 | | NULL | 0 | 0 | 0
       | | 6794475 | DB_USER | 111.11.0.65:27488 | DB_NAME |睡觉| 3757 | | NULL | 0 | 0 | 0
       | | 6794550 | DB_USER | 111.11.0.65:32670 | DB_NAME |睡觉| 3731 | | NULL | 0 | 0 | 0
    | | 6794797 | DB_USER | 111.11.0.65:472424 | db_name |睡觉| 3639 | | NULL | 0 | 0 | 0
      | | 6794909 | DB_USER | 111.11.0.65:56029 | DB_NAME |睡觉| 3591 | | NULL | 0 | 0 | 0
     | | 6794981 | DB_USER | 111.11.0.65:59201 | DB_NAME |睡觉| 3567 | | NULL | 0 | 0 | 0
       | | 6795096 | DB_USER | 111.11.0.65:2390 | DB_NAME |睡觉| 3529 | | NULL | 0 | 0 | 0
      | | 6795270 | DB_USER | 111.11.0.65:10125 | db_name |睡觉| 3473 | | NULL | 0 | 0 | 0
       | | 6795402 | DB_USER | 111.11.0.65:18407 | DB_NAME |睡觉| 3424 | | NULL | 0 | 0 | 0
      | | 6795701 | DB_USER | 111.11.0.65:35679 | DB_NAME |睡觉| 3330 | | NULL | 0 | 0 | 0
        | | 6800436 | DB_USER | 111.11.0.65:57815 | DB_NAME |睡觉| 1860年| | NULL | 0 | 0 | 0
      | | 6806227 | DB_USER | 111.11.0.67:20650 | DB_NAME |睡觉| 188 | | NULL | 1 | 0 | 0
+ --- + ------ + ------- + ------ + - + - + - + ------ + ---- + ----- + ---- +

15行(0.00秒)

你可以看一个例子 6794372命令是睡眠,时间是3800.这是阻止其他操作 应使用命令逐个杀死这些进程。

KILL 6794372; 一旦你杀死了所有睡眠连接,事情应该开始正常工作

答案 3 :(得分:1)

您需要执行两个步骤:

  1. 授予var / locks文件夹的777权限
  2. 删除var / locks文件夹的所有文件

答案 4 :(得分:0)

每当您启动索引过程时,Magento都会将一个锁定文件写入var / locks文件夹。所以你需要做两个步骤:

  1. 授予var / locks文件夹的777权限
  2. 删除var / locks文件夹的所有文件。
  3. 现在刷新管理面板中的索引管理页面。 享受!!