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.
Falls Sie auch Interesse an Magento oder Odoo haben oder unsere Expertise für Ihr ERP-Projekt benötigen, dann nehmen Sie mit uns Kontakt auf. Wir helfen Ihnen gerne weiter! Sie erreichen uns entweder telefonisch unter +49 4105 135 03 99, per Mail an [email]sales@initos.com[/email] oder über unser Kontaktformular.
Vielen Dank für diesen hilfreichen Beitrag!
Bei welcher Magento-Version wurde dieser Bug denn entdeckt und ab wann ist er behoben?
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.
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?
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.