5

ProductFlatDataを有効にしてインデックスを再作成しようとすると-magentoからエラーが発生します

Flat Catalogモジュールには、64個のフィルター可能および/またはソート可能な属性の制限があります。現在、521個あります。このモジュールを使用するには、フィルター可能/ソート可能属性の数を減らしてください。

これが何を意味し、magentoがこの値をどこから取得するのか理解できません。属性には321の異なる属性しかないので、magentoが現在使用されている521の値を取得し、そのうち64を制限するところから???

thnx。

4

2 に答える 2

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

問題は、製品が持つ属性の数ではなく、フィルタリングおよび/またはソート可能な属性の数です(もちろん、すべての属性を除く)。

トレースMage_Catalog_Model_Resource_Product_Flat_Indexer::getFlatIndexes()して、Magentoが合計521のインデックスに到達する方法を確認します。

簡単に確認するには、テーブルを確認して、フィルター可能( )および/またはソート可能(= 1)catalog_eav_attributeの属性の数を確認することもできます。is_filterable = 1used_for_sort_by

于 2012-05-10T15:03:27.457 に答える
4

発生しているエラーは、次のファイルから発生しています。

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

この制限は、次のファイルにあるCatalogconfig.xmlファイルで設定されているようです。

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

「max_index_count」を検索すると、この値が64に設定されていることがわかります。

この制限が設定されている理由はわかりませんが、64に設定する正当な理由があると想像する必要があります。開発環境(ライブサイトでこれを試してから、何ができるかを理解することをお勧めします)発生)この値を変更して、何が起こるかを確認できます。

使用しているインデックスの数(521)は、Indexer.phpファイルのgetFlatIndexes関数から取得されます。Magentoがデフォルトで使用する321+いくつかの追加のものがあるので、521に到達していると思います。

推測しなければならない場合、この制限は、フラットカタログテーブルが水平方向に大きくなりすぎないようにするために設定されています。テーブルが大きくなりすぎると速度の問題があると思います。

于 2012-05-10T14:47:13.703 に答える