Problem
Falls ihr größere Backups habt, welche z.B. mit mysqldump erstellt wurden, so kann der komplette Import schon mal einige Minuten dauern. Was die Meisten nicht wissen ist, dass der Import solcher mit mysqldump erstellten Backup Dateien viel länger dauert.
How Can I Speed Up This Process?
Bei setzen der folgenden Flags vor dem Import im Datenbank Dump, kann die Importzeit dramatisch verkürzt werden:
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
Wenn der auto-commit deaktiviert wurde muss am Ende ein manueller commit erfolgen:
COMMIT;
Durch deaktivieren der unique checks und foreign key kann einiges an Geschwindigkeit heraus geholt werden.
Mit dem folgenden Bash-Script könnt ihr das Szenario automatisieren:
#!/bin/bash
echo "SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;" > backup.sql
mysqldump -u myuser --password=mypassword mydatabase >> backup.sql
echo "COMMIT;" >> backup.sql
Zur grafisch Erstellung einer MySQL Datenbanken wird das kostenlose Programm MySQL Workbench bereit gestellt. Ebenfalls ist Reverse Engineering möglich, ihr könnt ein Datenbankmodel aus einer bestehenden Datenbank Tabelle generieren und editieren.
Ihr habt bereits eine Tabelle die ihr anpassen möchtet? Kein Problem, neben dem editieren um z.B. Erweiterung einzubauen, könnt ihr Fremdschlüsseln zuweisen. Nach dem laden der Datenbank habt ihr sofort euer Datenbankmodel und könnt dieses Bequem mit einer grafischen Oberfläche erweitern. Die Fremdschlüssel werden so gar automatisch durch das Setzen von Verbindungen generiert.
MySQL Workbench
Gelegentlich erhaltet ihr MySQL-Errors bei einem Repair von Tabellen … hier findet ihr eine kurze Übersicht einiger Error-Codes sowie Hinweise zum lösen. Anhand der Error-Codes kann z.B. abgeleitet werden ob der Fehler von einem defekten Datei-System hervor geht, es gar ein MySQL-Bug ist oder ähnlich. Nicht verzweifeln, sondern genau die Fehler-Codes analysieren!
Notice: Undefined index: 0 in /var/www/…/httpdocs/app/code/core/Mage/Core/Model/Mysql4/Config.php on line 92
#0 /var/www/…/httpdocs/app/code/core/Mage/Core/Model/Mysql4/Config.php(92): mageCoreErrorHandler(8, ‘Undefined index…’, ‘/var/www/…’, 92, Array)
#1 /var/www/…/httpdocs/app/code/core/Mage/Core/Model/Config.php(268): Mage_Core_Model_Mysql4_Config->loadToXml(Object(Mage_Core_Model_Config))
#2 /var/www/…/httpdocs/app/code/core/Mage/Core/Model/App.php(263): Mage_Core_Model_Config->init(Array)
#3 /var/www/…/httpdocs/app/Mage.php(434): Mage_Core_Model_App->init(”, ‘store’, Array)
#4 /var/www/…/httpdocs/app/Mage.php(455): Mage::app(”, ‘store’, Array)
#5 /var/www/…/httpdocs/index.php(79): Mage::run(”)
#6 {main}
Ihr habt ein Magento-Backup wieder in eine Datenbank importiert und bekommt beim Aufruf des Shops über das Front-End eine ähnliche Fehlermeldung?
Magento speichert bei der Installation die Website-IDs in die Datenbank mit der ID 0. Bei dem Import oder der Übertragung der Datenbank in eine Andere ist ggf. aus der ID 0 für den Admin-Teil der Website eine 2 geworden (so bei uns im aktuellen Fall).
Ändert ihr nun in der Tabelle core_website und core_store die website_id des Datensatzes mit dem Code admin zurück in eine 0, so ist der Fehler behoben.
Unabhängig davon auch beim Import den Fremdschlüssel-Check deaktivieren wie diesem Artikel beschrieben.
KategorienMagento, MySQL Tags: datenbank, datenbank import, debug ausgabe, e-commerce, ecommerce, Magento, magento fehler, MySQL, phpmyadmin, shop, webshop
Der Import eines Datenbank-Dumb von Magento bricht mit einer Fehlermeldung ab oder wird nicht vollständig importiert?
Dafür gibt es eine Lösung, und zwar schreibt ihr an den Anfang der Import-Datei die Zeile
– add this above the first line
SET FOREIGN_KEY_CHECKS = 0;
sowie als letzte Zeile
– add this below the last line
SET FOREIGN_KEY_CHECKS = 1;
Danach sollte der Import problemlos möglich sein, da ihr die Fremdschlüssel-Überprüfung während des Imports deaktiviert habt um die Tabellen in beliebiger Reihenfolge zu importieren. Außerdem wird der Import beschleunigt
KategorienMagento, MySQL Tags: datenbank, datenbank import, datenbank import error, e-commerce, ecommerce, fremdschlüssel, import fehler, Magento, magento datenbank importieren, MySQL, SET FOREIGN_KEY_CHECKS
Die Magento Entwickler haben ein kostenloses Tool namens “Magento Database Repair Tool” zum finden prüfen und reparieren von Datenbanken veröffentlicht. Es lassen sich damit zwei Datenbanken miteinander vergleichen, sollte es zu Abweichungen kommen so werden fehlende Tabellen hinzugefügt oder vorhandene repariert. Außerdem werden fehlende Felder hinzugefügt und inkonsistente Daten entfernt. Darüber hinaus werden fehlende Fremdschlüssel oder Indexe hinzugefügt, falls sie fehlen sollten. Das Tool steht ab sofort zum Download bereit.
Download (klick hier)
KategorienMagento, MySQL, PHP, Programmierung Tags: database repair tool, datenbank, e-commerce, entwicklung, internet marketing, Magento, magento datenbank fehler, MySQL, PHP, shop, webshop, Zend, zend framework