2012-05-10 79 views
5
試圖啓用和重新索引產品平面數據時

- 從magento的Magento的扁平產品

的平面目錄模塊得到錯誤具有64過濾和/或排序 屬性的限制。目前有521個。請減少可過濾/可排序屬性的編號 以使用此模塊。

我不明白這是什麼意思,從哪裏得到magento這個值。 在屬性中,我只有321個不同的屬性,所以從哪裏得到當前使用的521的值,以及哪裏需要64個限制?

thnx。

+0

好奇 - 在這個問題永遠解決或周圍工作? – Laizer

回答

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定義和他們的錯誤與

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

你的問題之前,默認情況下,MySQL安裝允許64個鍵的最大數量相匹配,不在於有多少屬性,你的產品也有,但其中有多少是可過濾和/或可排序(除了全部當然是您的屬性)。

跟蹤Mage_Catalog_Model_Resource_Product_Flat_Indexer::getFlatIndexes()瞭解Magento如何達到總計521個索引。

對於一個快速檢查,你也可以在你catalog_eav_attribute表看看,並檢查了多少屬性過濾(is_filterable = 1)和/或排序(used_for_sort_by = 1)

+0

thnx - 將嘗試更改mysql參數並優化屬性 – Kudja

4

你所得到的錯誤是從以下文件來:

/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默認使用的一些額外的。

如果我不得不猜測,這個限制是適當的,以防止扁平目錄表水平變得太大。我猜測桌子太大時會出現速度問題。

+0

thnx - 將嘗試使用此參數進行訓練 – Kudja