【问题标题】:Magento Indexes Issue - Can't reindexMagento 索引问题 - 无法重新索引
【发布时间】:2013-01-02 18:47:20
【问题描述】:
我的 Magento 1.6.2.0 商店中的索引管理存在问题。基本上我不能让他们更新。状态显示为Processing,但现在已经超过 3 周了。
当我尝试重新索引时,我收到了这条消息Stock Status Index process is working now. Please try run this process later,但现在是 3 周吗?所以看起来进程被冻结了,但我不知道如何重新启动。
有什么想法吗?
干杯
【问题讨论】:
标签:
magento
indexing
magento-1.6
【解决方案1】:
每当您启动索引过程时,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
锁定文件阻止其他用户启动索引进程。但是,如果索引请求在完成之前超时或失败,则锁定文件将处于锁定状态。这可能就是发生在你身上的事情。我建议您检查锁定文件的最后修改日期,以确保其他人现在没有运行重新索引器,然后删除锁定文件。这将清除您的
股票状态指数流程正在运行。请稍后尝试运行此进程
错误。之后,一次运行一个索引器以确保每个都完成。
【解决方案2】:
您好,如果没有,您是否手动调用脚本,然后在您的根文件夹中创建一个文件并将此代码写入其中
require_once 'app/Mage.php';
umask( 0 );
Mage :: app( "default" );
$process = Mage::getSingleton('index/indexer')->getProcessByCode('catalog_product_flat');
$process->reindexAll();
此代码有时会手动为您的 magento 建立索引,如果您的 magento 商店包含大量产品,则需要大量时间来重新索引产品,因此当您可以从管理员转到索引管理时,它会显示处理阶段中的一些索引,因此此代码可能会帮助您将处理阶段删除到索引的就绪阶段。
如果您有权限,您也可以使用 SSH 进行索引。索引也更快
【解决方案3】:
对于 magento 的较新版本,即 2.1.3,我必须使用此解决方案:
http://www.elevateweb.co.uk/magento-ecommerce/magento-error-sqlstatehy000-general-error-1205-lock-wait-timeout-exceeded
如果您运行大量自定义脚本并在数据库连接有机会关闭之前终止脚本,则可能会发生这种情况
如果您从 CLI 登录 MySQL 并运行命令
显示进程列表;
你会得到以下输出
+———+——————+——————-+——————+———+——+———-+——————+—— ———+——————+———–+
|身份证 |用户 |主持人 |分贝 |命令 |时间 |状态 |信息 |行_发送 |行检查 |行读|
+———+——————+——————-+——————+———+——+———-+——————+—— ———+——————+———–+
| | 6794372 |数据库用户| 111.11.0.65:21532 |数据库名称|睡眠 | 3800 | |空 | 0 | 0 | 0
|
| 6794475 |数据库用户| 111.11.0.65:27488 |数据库名称|睡眠 | 3757 | |空 | 0 | 0 | 0
|
| 6794550 |数据库用户| 111.11.0.65:32670 |数据库名称|睡眠 | 3731 | |空 | 0 | 0 | 0
|
| 6794797 |数据库用户| 111.11.0.65:47424 |数据库名称 |睡眠 | 3639 | |空 | 0 | 0 | 0
|
| 6794909 |数据库用户| 111.11.0.65:56029 |数据库名称|睡眠 | 3591 | |空 | 0 | 0 | 0
|
| 6794981 |数据库用户| 111.11.0.65:59201 |数据库名称|睡眠 | 3567 | |空 | 0 | 0 | 0
|
| 6795096 |数据库用户| 111.11.0.65:2390 |数据库名称|睡眠 | 3529 | |空 | 0 | 0 | 0
|
| 6795270 |数据库用户| 111.11.0.65:10125 |数据库名称 |睡眠 | 3473 | |空 | 0 | 0 | 0
|
| 6795402 |数据库用户| 111.11.0.65:18407 |数据库名称|睡眠 | 3424 | |空 | 0 | 0 | 0
|
| 6795701 |数据库用户| 111.11.0.65:35679 |数据库名称|睡眠 | 3330 | |空 | 0 | 0 | 0
|
| 6800436 |数据库用户| 111.11.0.65:57815 |数据库名称|睡眠 | 1860 | |空 | 0 | 0 | 0
|
| 6806227 |数据库用户| 111.11.0.67:20650 |数据库名称|睡眠 | 188 | |空 | 1 | 0 | 0
+———+——————–+——————-+———–+———+——+———-+——————+———–+ —————+———–+
15 行(0.00 秒)
你可以看一个例子
6794372命令是sleep,时间是3800。这是防止其他操作
应该使用命令一个一个地杀死这些进程。
杀死 6794372;
一旦你杀死了所有的睡眠连接,一切应该会重新开始正常工作
【解决方案4】:
你需要做两步:
- 为 var/locks 文件夹授予 777 许可
- 删除 var/locks 文件夹的所有文件
【解决方案5】:
每当您启动索引过程时,Magento 都会将锁定文件写入 var/locks 文件夹。所以你需要做两个步骤:
- 授予 777 对 var/locks 文件夹的权限
- 删除 var/locks 文件夹的所有文件。
现在刷新管理面板中的索引管理页面。
尽情享受吧!