0

カテゴリ エンティティに多くのカスタム属性を追加しましたが、インデックスを再作成しようとするとエラーが発生します

SQLSTATE[42000]: Syntax error or access violation: 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs

これは、フラット テーブルが大きすぎて、実際に多くの列があることを意味します。そのテーブルにカスタム属性は必要ないので削除できますが、どうすれば削除できますか? フィルター可能で比較可能なものをfalseに設定すると、それらはフラットテーブルにあるべきではないことがわかりました。どんな助けでも大歓迎です

public function getDefaultEntities()
{
    return array(
        'catalog_category' => array(
            'entity_model'      => 'catalog/category',
            'attribute_model'   => 'catalog/resource_eav_attribute',
            'additional_attribute_table' => 'catalog/eav_attribute',
            'entity_attribute_collection' => 'catalog/category_attribute_collection',
            'table'             => 'catalog/category',
            'attributes'        => array(
                'cat_type' => array(
                    'group'             => 'General',
                    'label'             => 'Category Type',
                    'type'              => 'int',
                    'input'             => 'select',
                    'default'           => '0',
                    'class'             => '',
                    'backend'           => '',
                    'frontend'          => '',
                    'source'            => 'eav/entity_attribute_source_cattype',
                    'global'            => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
                    'visible'           => true,
                    'required'          => false,
                    'user_defined'      => false,
                    'searchable'        => false,
                    'filterable'        => false,
                    'comparable'        => false,
                    'visible_on_front'  => false,
                    'visible_in_advanced_search' => false,
                    'unique'            => false
                ),

編集:

私は属性を削除し、それが機能し、インストールスクリプトを再度実行しました。以下に投稿した例のように、それらのすべてにフィルター可能で同等の設定が false に設定されています。エラーが再び表示されます。何が欠けていますか?

編集:

フラット カテゴリ テーブルを確認したところ、すべての属性が追加されていることがわかりました。フィルタ可能で比較可能なものは、製品属性に対してのみ機能しますか? カテゴリ商品なら同じ値になると思いました。

そのテーブルから属性を除外する方法はありますか? テーブルを作成するファイルの変更を除外することはできますが、明らかにローカルフォルダーにありますが、これを行うためのクリーンな方法を知りたいですか?

4

1 に答える 1

0

eav_attribute テーブルと used_in_product_listing という名前の列を確認して、それを 0 または false に設定し、カテゴリ製品フラット テーブルに追加しないでください。

于 2013-03-01T16:04:29.667 に答える