Da es unter Linux (und Mac OS X) einwandfrei läuft und Magento ein sehr vielversprechendes Shop-System ist, wollte ich es einmal auf meiner Entwicklungsmaschine mit Windows XP und aktuellem PHP 5.2.5 einsetzen. Aber leider ist nicht alles Gold was glänzt.
Der Fehler ist zwar nicht bei der E-Commerce Software zu suchen aber eines dieser typischen Ärgernisse von PHP, doch dazu gleich. Der Fehler tritt beim Aufrufen des Installers (genauer beim Erstellen der DB-Tabellen) auf und besteht darin, dass man eine ewig lange PDO Exception zu sehen bekommt und die Software eben nicht installiert wird. Die Fehlermeldung lautet:
General error: 2014 Cannot execute queries while other
unbuffered queries are active.
Consider using PDOStatement::fetchAll().
Alternatively, if your code is only ever going to run
against mysql,you may enable query buffering by setting the
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
Sucht man in den Magentoforen ein wenig rum, ist das Problem ein bekanntes, nur eine Lösung gibt es dafür nicht, weil es ein Fehler von PHP/PDO ist. Auch der Workaround an zwei Stellen im Code
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
auf true zu setzen bringt nichts. Der PHP-/PDO-Fehler wird hier und hier beschrieben. Der Fehler wurde Ende 2006(!) reported und bis heute nicht gefixt. Das ist mehr als ärgerlich, denn der einzige Workaround der zur Verfügung steht ist die Verwendung einer php_pdo_mysql.dll von fragwürdiger Herkunft.
Das kann es doch nicht sein — ist es aber leider.




7 Comments
mot
3. Februar 2008Im PDO die native MySQL Extension für PHP nutzen?
Reto Kiefer
3. Februar 2008Magento empfiehlt ODBC zu verwenden, weil es damit gehen solle. Inwieweit Dein Vorschlag was helfen soll, kann ich nicht beurteilen…
Aber das Problem ist doch, dass es da erhebliche Bugs gibt, die einfach nicht gefixed werden und das seit mehr als einem Jahr. Und was soll das Gerede um PDO 2 wenn sie noch nicht mal PDO 1 gescheit hinbekommen haben…
Weizen
20. Februar 2008Es gibt noch eine andere Lösung
download:
http://www.nolimitclubbing.com/lib_php/php_pdo_mysql.dll (mirror for the file mentioned in bug comments) and add this file to your phpext directory.
Quelle:
http://www.magentocommerce.com/boards/viewthread/3014
Reto Kiefer
20. Februar 2008Ja genau, das meinte ich mit einer DLL fragwürdiger Herkunft. Mag sein, dass es damit geht aber ich installiere keine DLLs, von denen ich nicht die Urheber kenne…
Phoenix
20. März 2008Wir hatten das selbe Problem auf unseren Entwicklungssystemen. Mit der oben genannten DLL läuft Magento einwandfrei unter Windows.
Es handelt sich um einen Bug in PHP bzw. der PDO-Extension, der aber – obwohl er seit längerem bekannt ist – noch immer nicht gefixt ist.
Reto Kiefer
20. März 2008Hallo Phoenix,
danke für den Hinweis, auf die Funktionalität der DLL. Wir “lösen” das Problem so, dass wir die Entwicklung komplett auf Macs verlagern :o)
TechDivision
22. August 2008Bin gerade durch Zufall über den Beitrag gestolpert und konnte mir ein schmunzeln beim Lesen des Posts und vor allem der Kommentar jetzt gerade nicht verkneifen….
Willkommen in der Mac-Welt, in der auch wir unsere Magento-Projekte entwickeln – bislang ohne große Probleme. Für einen Erfahrungsaustausch stehen wir gerne zur Verfügung.