Wenn pg_restore --clean --dbname=my_database backup_file.sql
läuft eine Datenbanksicherung auf eine leere Datenbank wiederherzustellen, gelingt die Wiederherstellung, aber mit der folgenden Warnmeldung:Wie kann ich zuverlässig feststellen, ob pg_restore erfolgreich war, wenn der Erfolg manchmal zu einem Exit-Code von 1 führt?
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 161; 1259 16549 TABLE example_table root
pg_restore: [archiver (db)] could not execute query: ERROR: table "example_table" does not exist
Command was: DROP TABLE public.example_table;
WARNING: errors ignored on restore: 1
Als die Nachricht anzeigt, gelang es der wieder herstellen. Es gab Fehler, aber pg_restore
behauptet, sie ignoriert zu haben. Ich war auch in der Lage, die Datenbank manuell abzufragen, um zu überprüfen, dass alle Daten, von denen ich erwartete, dass sie in dem Speicherabzug vorhanden waren, nach der Wiederherstellung in der Datenbank vorhanden waren.
Das Problem ist der oben genannte Befehl mit einem Status von 1, nicht 0. Bei der Durchführung von Datenbankwiederherstellungen programmgesteuert (wie ich vorhabe, wenn ich diesen Prozess automatisiere), ist dies problematisch, da mein Skript dazu in der Lage sein muss zuverlässig feststellen, ob die Wiederherstellung erfolgreich war oder nicht
Gibt es eine Möglichkeit, pg_restore
Warnungen zu ignorieren, wenn es seinen Ausgangsstatus feststellt? Oder gibt es eine alternative Methode zu pg_restore
Ich kann verwenden, dass ich genauere Erfolgs-/Fehlerinformationen von bekommen kann? Wie kann ich die Datenbank wiederherstellen und programmatisch feststellen, ob die Wiederherstellung erfolgreich war?
Beachten Sie, dass ich derzeit PostgreSQL 9.1 verwende.