Magento: Datenbank Import Error #1452 (MySQL)
In der letzen Wochen bin ich beim Einspielen eines Magento Datenbank Dumps nahezu verzweifelt. Der Plan war eigentlich “nur” ein Backup des Shops einzuspielen, um so die schiefgegangenen Update-Versuche von Magento zu neutralisieren und den Shop wieder lauffähig zu bekommen.
Gesagt, getan. Allerdings mit wenig Erfolg. Das SQL-Backup-Skript mit allen Datenbanktabellen und -inhalten sollte einfach nur über PHPMyAdmin eingespielt werden, so dass die Datenbank auf dem gewünschten Stand ist. Bei der Ausführung der diveresen SQL-Statements kam es allerdings zu folgendem Fehler.
#1452 - Cannot add or update a child row: a foreign key constraint fails (`xxx`.<result 2 when explaining filename '#sql-178c_4d'>, CONSTRAINT `FK_CUSTOMER_EAV_ATTRIBUTE_ID` FOREIGN KEY (`attribute_id`) REFERENCES `eav_attribute` (`attribute_id`) ON DELETE )
Bei genauer Betrachtung der Fehlermeldung fiel auf, dass es Probleme zwischen den Fremdschlüssel-Verbindungen einzelner Tabellen gibt. Das Problem tritt auf, wenn in z.B. Tabelle A ein Datensatz eingefügt werden soll, der auf Tabelle B verweist, aber in Tabelle B (noch) nicht existiert. Somit zeigt der Datensatz “ins Leere”.
Damit beim Importieren einer Backup-Datei diese Überprüfung auf vorhandene Datensätze nicht durchgeführt wird und das Problem des gescheiterten Imports gelöst wird, sollte die SQL-Backup-Datei zu Beginn mit folgenden Anweisungen erweitert werden:
SET AUTOCOMMIT=0; SET FOREIGN_KEY_CHECKS=0;
Am Ende der Backup-Datei sollte folgende Anweisung eingefügt werden:
SET FOREIGN_KEY_CHECKS=1; COMMIT; SET AUTOCOMMIT=1;
Diese Anweisungen bewirken, dass für den Zeitraum des Datenbankimport die Constraints nicht auf ihre Gültigkeit geprüft werden und somit “stumpf” alle Daten importiert werden.
Aktuellste Kommentare