Magento – keine Produkte im Shop bei Indexerstellung

veröffentlicht in Consulting am 4. Nov. 2011 Tags: , , , ,

Ein sehr ungewöhnliches Problem ist uns bei einem größeren Magento Shop eines Kunden begegnet. Jedes Mal wenn in Magento die Indizes neu erstellt wurden, waren im Shop keine Produkte mehr verfügbar. Das ist natürlich mehr als ärgerlich, denn der Workaround, die Indizes nur in der Nacht neu zu bauen, ist bei einem Shop, der viele Produkte hat und diese häufig aktualisiert nicht sehr praktikabel.

Eine Auswertung des SQL-Query-Logs ergab erstmal nichts auffälliges, der ganze Prozess zur Indexerstellung lief in einer Transaktion ab. Bei einem genauen Blick und sorgfältiger Analyse stellte man fest, dass Magento im Model Mage_Index_Model_Mysql4_Abstract den SQL-Befehl „ALTER TABLE {$destTable} DISABLE KEYS“ immer ausführt, auch wenn die Storage-Engine von MySQL InnoDB ist. Diese Zeile existiert, um das nachfolgende INSERT zu beschleunigen, dies ist aber nur bei MyISAM notwendig. Unter InnoDB sorgt es dafür, dass ein implizierter Commit gemacht wird und damit die Indextabelle erstmal leer ist. Das Überschreiben des Models hat das Problem gelöst.

In der aktuellen Magento-Version ist das Problem behoben, aber nicht jeder will und kann seinen Shop gleich updaten.

Über Markus Schneider

Als Analytiker und Informatiker ist Markus Schneider Experte für Shop- und ERP-Systeme. Dabei setzt er sein fundiertes Wissen insbesondere im Bereich der Open Source Software ein und kann verschiedene
Anwendungssysteme, z.B. Oxid eSales, OTRS, und Solr Suche, darin integrieren. Auch mit der Onlineshopsoftware Magento kennt sich Herr Schneider bestens aus. Zudem greift er auf gesammelte Erfahrungen unterschiedlicher Systeme wie Sage, SAP und speziell OpenERP / Odoo zurück.

4 Kommentare zu 'Magento – keine Produkte im Shop bei Indexerstellung'

Kommentare als RSS

  1. Thomas Birke sagt,

    am 28. Aug. 2012

    Vielen Dank für diesen hilfreichen Beitrag!
    Bei welcher Magento-Version wurde dieser Bug denn entdeckt und ab wann ist er behoben?

  2. Markus Schneider sagt,

    am 28. Aug. 2012

    Der Bug ist ab Magento CE 1.5 behoben. Gefunden hatten wir in einer älteren Version, ich gehe davon aus, dass alle Version darunter betroffen sind.

  3. Peter sagt,

    am 18. Sep. 2012

    Hallo Markus,

    vielen Dank für den Beitrag. Wir haben auch dieses Problem, das wir neuerdings ca. ein mal in der Woche fast ohne Produkte im Shop sind (Version 1.4.1.1).
    Erst nachdem die Aktualisierung der Indexe angestoßen wurde habe ich alle Produkte wieder.

    Eine Frage … ist es ok, wenn ich die Abstract.php aus Magento 1.6 nehme?

  4. Markus Schneider sagt,

    am 18. Sep. 2012

    Hallo Peter,

    nein das geht nicht, da noch weitere Änderung im Magento vorgenommen wurden. Dann würde ihr Shop gar nicht mehr funktionieren befürchte ich.