2012-05-10 39 views
5

khi cố gắng kích hoạt và reindex sản phẩm Flat dữ liệu - nhận được lỗi từ MagentoMagento sản phẩm phẳng

Module Catalogue Flat có một giới hạn của 64 thể lọc và/hoặc sắp xếp được thuộc tính. Hiện tại có 521 người trong số họ. Vui lòng giảm số thuộc tính có thể lọc/sắp xếp để sử dụng mô-đun này.

Tôi không thể hiểu ý nghĩa của điều này và từ nơi Magento nhận giá trị này. Trong thuộc tính tôi chỉ có 321 thuộc tính khác nhau, do đó, từ nơi Magento nhận được giá trị của 521 hiện đang được sử dụng và nơi nó có giới hạn cho 64 người trong số họ ???

thnx.

+0

Curious - được vấn đề này bao giờ được giải quyết hoặc làm việc xung quanh ? – Laizer

Trả lời

5

Phương pháp Mage_Catalog_Model_Resource_Product_Flat_Indexer::prepareFlatTable() được ném ngoại lệ này, khi sản phẩm của bạn có nhiều hơn

<global> 
    <catalog> 
     <product> 
      <flat> 
       <max_index_count>64</max_index_count> 
      </flat> 
     </product> 
    </catalog> 
</global> 

chỉ mục. tối đa này thường được định nghĩa trong app/code/core/Mage/Catalog/etc/config.xml và phù hợp với số lượng tối đa 64 phím cho phép bằng mySQL cài đặt mặc định, trước khi họ lỗi với

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

Vấn đề của bạn không phải là có bao nhiêu thuộc tính sản phẩm của bạn có, nhưng có bao nhiêu trong số đó là có thể lọc và/hoặc sắp xếp được (ngoại trừ tất cả thuộc tính của bạn, tất nhiên).

Dấu vết Mage_Catalog_Model_Resource_Product_Flat_Indexer::getFlatIndexes() để tìm hiểu cách Magento đạt tổng cộng 521 chỉ mục.

Đối với một kiểm tra nhanh bạn cũng có thể có một cái nhìn tại bảng catalog_eav_attribute bạn và kiểm tra có bao nhiêu thuộc tính có thể lọc (is_filterable = 1) và/hoặc sắp xếp được (used_for_sort_by = 1)

+0

thnx - sẽ cố gắng thay đổi thông số mysql và tối ưu hóa các thuộc tính – Kudja

4

Các lỗi bạn đang nhận được đến từ các tập tin sau đây:

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

dường như giới hạn này được thiết lập trong file config.xml Catalogue mà nằm trong các tập tin sau đây:

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

Làm một tìm kiếm cho "max_index_count" bạn sẽ thấy rằng giá trị này được đặt thành 64.

Tôi không chắc chắn tại sao giới hạn này được đặt ra, nhưng tôi phải tưởng tượng rằng họ có lý do chính đáng để đặt nó là 64. Trên môi trường phát triển (tôi khuyên bạn không nên thử điều này trên trang web trực tiếp của mình trước đây bạn hiểu điều gì có thể xảy ra) bạn có thể thay đổi giá trị này và xem điều gì xảy ra.

Số lượng chỉ mục bạn có (521) đến từ hàm getFlatIndexes trong tệp Indexer.php. Tôi đoán bạn đang nhận được đến 521 bởi vì bạn có 321 của bạn + một số bổ sung mà Magento sử dụng theo mặc định.

Nếu tôi phải đoán, giới hạn này được áp dụng để giữ cho các bảng danh mục phẳng không bị quá lớn theo chiều ngang. Tôi đoán có một vấn đề tốc độ khi bảng được quá lớn.

+0

thnx - sẽ cố gắng thử nghiệm với thông số này – Kudja

Các vấn đề liên quan