Magento: MySQL Debuggen

Magento: MySQL Debuggen

Magento hat zwar ein gutes Debugging System integriert, allerdings kommt es oft zu Problemen mit dem debugging von MySQL-Queries. Diese stellen einen zu langen String da und werden daher in der Fehlermeldung ab einer gewissen Länge einfach gekürzt. Oft kann man dann kaum noch sinnvolle Informationen aus der Fehlermeldung rauslesen, wie Beispielsweise hier: Aus dieser Fehlermeldung kann man zwar rauslesen, dass es ein Problem mit einem Primary Key gibt, nicht allerdings welche Tabelle das betrifft. Zum Glück haben die Magento Entwickler aber genau für diesen Fall vorgebaut und eine separate MySQL Debugging Funktion eingebaut. Diese kann in der Datei /lib/Varien/Db/Adapter/Pdo/Mysql.php aktiviert werden. Hierfür muss in der Zeile 103 (Version 1.7) die Variable $_debug auf true gesetzt werden: In früheren oder späteren Version kann die Zeile vielleicht etwas variieren, die Datei sollte aber bis zur Magento Version 2.0 die gleiche bleiben. Anschließend werden MySQL-Debug Informationen inklusive der kompletten MySQL-Queries in die Datei /var/debug/pdo_mysql.log geschrieben, wodurch man die Probleme besser verstehen und...
Magento: INSERT command denied to user ‚user’@’ip‘ for table ‚log_visitor‘

Magento: INSERT command denied to user ‚user’@’ip‘ for table ‚log_visitor‘

Plötzlich ist der Magento Online Shop nicht mehr erreichbar und es wird einem nur noch die Fehlermeldung angezeigt? Der Fehler ist, im Vergleich zu vielen anderen Magento Fehlern, sehr aussagekräftig: durch den MySQL Servers wurde dem Shop der Schreibvorgang verwehrt. Bei vielen Webhostern liegt das daran, dass die Größe der MySQL Datenbanken gedeckelt ist. Bei 1&1 zum Beispiel (in diesem konkreten Paket) auf 100MB. Durch die Log-Tabellen, die Magento befüllt, sind diese 100MB schnell aufgebraucht. Am besten sichert man daher die entscheidenden Tabellen zuvor und leert dann die Tabellen. Hierzu benutzt man folgendes MySQL Query:...
MySQL Dump mit Beispieldaten

MySQL Dump mit Beispieldaten

Oftmals kommt es vor, dass man nicht die komplette Datenbank dumpen will, sondern nur die Struktur und Beispieldaten. Leider ist das mit den Standardtools wie PHPmyAdmin nicht möglich. Allerdings ist für das dumpen von Datenbanken das Konsolentool mysqldump sowieso die bessere Lösung. Und mit diesem Tool lassen sich solche Beispieldaten auch aus der Datenbank herausholen. Um Beispielsweise die ersten 30 Daten jeder Tabelle auszulesen muss man den Parameter an den mysqldump Befehl anhängen. Komplett sieht das ganze dann Beispielsweise so aus Generell empfiehlt es sich mysqldump für das Dumpen von größeren Datenbank zu verwenden, da das Tool, zusätzlich zu dem where Parameter, noch viele weitere Einstellungsmöglichkeiten hat. Diese spielen ihren Vorteil vor allem bei größeren Datenbanken mit Foreign Keys...