尝试启用和重新索引产品平面数据时 - 从 magento 收到错误
平面目录模块限制为 64 个可过滤和/或可排序的属性。目前有521个。请减少可过滤/可排序属性的数量以使用此模块。
我无法理解这意味着什么以及 magento 从哪里获得这些值。在属性中,我只有 321 个不同的属性,所以 magento 从哪里获得当前使用的 521 的值以及其中 64 个的限制?
谢谢。
尝试启用和重新索引产品平面数据时 - 从 magento 收到错误
平面目录模块限制为 64 个可过滤和/或可排序的属性。目前有521个。请减少可过滤/可排序属性的数量以使用此模块。
我无法理解这意味着什么以及 magento 从哪里获得这些值。在属性中,我只有 321 个不同的属性,所以 magento 从哪里获得当前使用的 521 的值以及其中 64 个的限制?
谢谢。
当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
您的问题不是您的产品有多少属性,而是其中有多少是可过滤和/或可排序的(当然,您的所有属性除外)。
跟踪Mage_Catalog_Model_Resource_Product_Flat_Indexer::getFlatIndexes()
以了解 Magento 如何达到总共 521 个索引。
为了快速检查,您还可以查看您的catalog_eav_attribute
表并检查有多少属性是可过滤的 ( is_filterable = 1
) 和/或可排序的 ( used_for_sort_by
= 1)
您收到的错误来自以下文件:
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Flat|Indexer.php
似乎此限制是在位于以下文件中的目录 config.xml 文件中设置的:
/app/code/core/Mage/Catalog/etc|config.xml
搜索“max_index_count”,您会发现该值设置为 64。
我不确定为什么会有这个限制,但我不得不想象他们有充分的理由将其设置为 64。发生)你可以改变这个值,看看会发生什么。
您拥有的索引数(521)来自 Indexer.php 文件中的 getFlatIndexes 函数。我猜你是 521 因为你有你的 321 + Magento 默认使用的一些额外的。
如果我不得不猜测,这个限制是为了防止平面目录表在水平方向上变得太大。我猜当表格太大时会出现速度问题。