Datenbank sicher/wiederherstellen

Hast du einen Fehler in der aktuellen Version gefunden ? Diesen kannst du uns hier mitteilen und uns bei der Fehlersuche helfen.
Antworten
vossy
Beiträge: 63
Registriert: 14. Apr 2008, 13:57

Datenbank sicher/wiederherstellen

Beitrag von vossy »

Hallo,

Ich habe mal versucht die DB mit mysqldumper zu sichern und dann wiederherzustellen.
Irgendwie will das nicht gelingen. Es kommt der Fehler:
Fehler bei der Anfrage:
DROP TABLE IF EXISTS `adm_categories`;
MySQL meldet:
Cannot delete or update a parent row: a foreign key constraint fails
Muss ich alte DB vorher platt machen? Wie?
Wenn ich sie lösche und dann das Backup in eine neue DB einspielen will geht das auch nicht.

Vielleicht ist das hier nicht das richtige Forum, aber ich denke DB Sicherung ist auch für Admidio Nutzer eine Thema
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Vielleicht hilft Dir dieser Beitrag weiter: http://forum.admidio.org/viewtopic.php?t=1207&start=15
vossy
Beiträge: 63
Registriert: 14. Apr 2008, 13:57

Beitrag von vossy »

Danke für die schnelle Antwort.

Aber auch die modifizierte .sql-Datei macht Probleme es kommt folgende Meldung
Cannot add or update a child row: a foreign key constraint fails (`bkdo_adm2/adm_members`, CONSTRAINT `adm_FK_MEM_ROL` FOREIGN KEY (`mem_rol_id`) REFERENCES `adm_roles` (`rol_id`))
Treten die Probleme nur bei de Admidio Datenbankstruktur auf?

Gibt es eine idiotensichere Methode, die Datenbank zu sichern UND erfolgreich woanders oder in der selben Umgebung wieder herzustellen?
milkaman
Former team member
Beiträge: 129
Registriert: 22. Feb 2006, 18:07

Beitrag von milkaman »

Eigentlich sollte das schon so funktionieren wie ich das in dem Beitrag ( viewtopic.php?t=1207&start=15) beschrieben hatte.

Der Grund für deine Fehler ist folgender. Wir benutzen foreign key contraints zwischen den Tabellen. Das heisst in der Tabelle adm_members dürfen nur Werte in der Spalte mem_rol_id stehen, die es auch in der Tabelle adm_roles in der Spalte rol_id gibt. Da die Member Tabelle eine Verknüpfung zwischen Usern und Rollen herstellt.

Wenn du ein DB Backup machst, werden die Tabellen vermutlich in Alphabetischer Reihenfolge in eine Datei gesichert. Beim einspielen des Backups passiert werden die Tabellen in der gleichen Reihenfolge wieder angelegt und gefüllt. Wenn aber z.B. die Tabelle adm_roles noch nicht mit Daten gefüllt ist, das sie alphabetisch sortiert erst nach adm_members an der Reihe ist, kann man in die Tabelle adm_members keine Daten eintragen.

Das Problem ist also nicht Admidio spezifisch sondern Foreign Key spezifisch.

Genau für solche Fälle gibt es dann diesen Befehl: SET FOREIGN_KEY_CHECKS=0; der während des Imports die Constraint Checks ausschaltet. Anschliessend musst die dann natürlich wieder mit SET FOREIGN_KEY_CHECKS=1; anschalten.

In PHPMyAdmin gibts bei den Export Optionen übrigens auch eine Option dafür: "Fremdschlüsselüberprüfung deaktivieren"
Dann werden diese beiden Befehle automatisch in dein Backup eingefügt.

Sollte also idiotensicher funktionieren.

Gruß

Roland
Antworten