尝试启用并重新索引产品平面数据时 - 从magento获取错误
Flat Catalog模块的可过滤和/或可排序限制为64 属性。目前有521个。请减少数量 可过滤/可排序的属性,以便使用此模块。
我无法理解这意味着什么以及magento从哪里获得这个值。 在属性中,我只有321个不同的属性,所以从magento获取当前使用的521的值以及它们中的64个限制的位置???
日Thnx。
答案 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默认使用的一些额外的。
如果我不得不猜测,这个限制是为了防止平面目录表水平变得过大。我猜测桌子太大时会出现速度问题。