Magento平板产品

时间:2012-05-10 14:30:22

标签: magento

尝试启用并重新索引产品平面数据时 - 从magento获取错误

  

Flat Catalog模块的可过滤和/或可排序限制为64   属性。目前有521个。请减少数量   可过滤/可排序的属性,以便使用此模块。

我无法理解这意味着什么以及magento从哪里获得这个值。 在属性中,我只有321个不同的属性,所以从magento获取当前使用的521的值以及它们中的64个限制的位置???

日Thnx。

2 个答案:

答案 0 :(得分:5)

当您的产品超过

时,方法Mage_Catalog_Model_Resource_Product_Flat_Indexer::prepareFlatTable()会抛出此异常
<global>
    <catalog>
        <product>
            <flat>
                <max_index_count>64</max_index_count>
            </flat>
        </product>
    </catalog>
</global>

索引。此最大值通常在app/code/core/Mage/Catalog/etc/config.xml中定义,并与默认mySQL安装允许的最大64个密钥数匹配,然后才会出错

ERROR 1069: Too many keys specified. Max 64 keys allowed

您的问题不是您的产品有多少属性,而是其中有多少属于可过滤和/或可排序(当然, all 属性除外)。

跟踪Mage_Catalog_Model_Resource_Product_Flat_Indexer::getFlatIndexes()以了解Magento如何达到521个索引。

要快速检查,您还可以查看catalog_eav_attribute表格并查看可过滤的多少属性(is_filterable = 1)和/或可排序(used_for_sort_by = 1)

答案 1 :(得分:4)

您收到的错误来自以下文件:

/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Flat|Indexer.php

此限制似乎在Catalog config.xml文件中设置,该文件位于以下文件中:

/app/code/core/Mage/Catalog/etc|config.xml

搜索“max_index_count”时,您会发现此值设置为64.

我不确定为什么会有这个限制,但我必须想象他们有充分的理由将它设置为64.在开发环境中(我建议你不要在你的实际网站上试试这个了解会发生什么)你可以改变这个值,看看会发生什么。

您拥有的索引数(521)来自Indexer.php文件中的getFlatIndexes函数。我猜你到了521,因为你有321 + Magento默认使用的一些额外的。

如果我不得不猜测,这个限制是为了防止平面目录表水平变得过大。我猜测桌子太大时会出现速度问题。

相关问题