2012-05-10 9 views
5

quando si cerca di attivare e reindicizzare prodotto piano dati - ottenere l'errore da Magentoprodotto piano Magento

Il modulo Catalogo piatto ha un limite di 64 filtrabili e/o ordinabili attributi. Attualmente ce ne sono 521. Si prega di ridurre il numero di attributi filtrabili/ordinabili per poter utilizzare questo modulo.

Non riesco a capire cosa significa e da dove Magento ottiene questi valori. In attributi ho solo 321 diversi attributi quindi da dove magento ottiene il valore di 521 attualmente in uso e dove ci vuole il limite per 64 di questi ???

thnx.

+0

Curioso - è stato questo problema mai risolto o aggirata ? – Laizer

risposta

5

Il metodo Mage_Catalog_Model_Resource_Product_Flat_Indexer::prepareFlatTable() sta gettando questa eccezione, quando il prodotto ha più di

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

indici. Questo valore massimo di solito è definito in app/code/core/Mage/Catalog/etc/config.xml e corrisponde al numero massimo di 64 tasti consentito per impostazione predefinita installazioni di MySQL, prima che l'errore con

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

Il tuo problema non è come molti attributi vostri prodotti hanno, ma quanti di loro sono filtrabile e/o ordinabile (eccetto all i tuoi attributi sono, ovviamente).

Trace Mage_Catalog_Model_Resource_Product_Flat_Indexer::getFlatIndexes() per scoprire come Magento raggiunge un totale di 521 indici.

Per un rapido controllo è anche possibile dare un'occhiata al vostro tavolo catalog_eav_attribute e controllare quanti attributi sono filtrabile (is_filterable = 1) e/o ordinabile (used_for_sort_by = 1)

+0

thnx - proverà a cambiare parametri mysql e ad ottimizzare gli attributi – Kudja

4

L'errore che si stanno ottenendo è venuta dal seguente file:

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

sembra che questo limite è fissato nel file config.xml catalogo che si trova nel seguente file:

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

Fare una ricerca di "max_index_count" troverai che questo valore è impostato su 64.

Non sono sicuro del motivo per cui questo limite è presente, ma devo immaginare che avessero una buona ragione per impostarlo su 64. In un ambiente di SVILUPPO (vorrei suggerire di non provare questo sul tuo sito live prima capisci cosa potrebbe accadere) potresti cambiare questo valore e vedere cosa succede.

Il numero di indici che avete (il 521) proviene dalla funzione getFlatIndexes nel file Indexer.php. Sto indovinando che stai arrivando a 521 perché hai i tuoi 321 + alcuni aggiuntivi che Magento usa di default.

Se ho dovuto indovinare, questo limite è stato messo in atto per mantenere le tabelle di catalogo piatte da troppo grandi orizzontalmente. Sto indovinando che c'è un problema di velocità quando il tavolo diventa troppo grande.

+0

thnx - proverà ad experement con questo parametro – Kudja

Problemi correlati