Warum wird pg_restore erfolgreich zurückgegeben, aber meine Datenbank nicht wiederhergestellt?

StackOverflow https://stackoverflow.com/questions/5900888

  •  29-10-2019
  •  | 
  •  

Frage

Ich habe eine Postgres 8.4-Datenbank auf einem Linux-Server, die ich mit dem folgenden Befehl gesichert habe:

pg_dump --format=c --exclude-table=log --file=/path/to/output my_db

Anschließend führe ich die erstellte Datei auf meinen lokalen Windows 7-Computer und versuche, die Datei mit dem folgenden Befehl auf meiner lokalen Postgres 8.4-Instanz wiederherzustellen:

pg_restore --create --exit-on-error --verbose c:\path\to\file

Der Wiederherstellungsbefehl generiert zahlreiche Ausgaben, die behaupten, er habe meine Datenbank erstellt, eine Verbindung dazu hergestellt und dann alle anderen Tabellen wie erwartet erstellt.Wenn ich jedoch die Datenbanken auf meinem lokalen Computer über pgAdmin ansehe, ist die wiederhergestellte Datenbank überhaupt nicht vorhanden.

Bei einem Versuch zur Fehlerbehebung habe ich den folgenden Befehl versucht:

pg_restore --create --exit-on-error --verbose --host=blahblah --username=no_one c:\path\to\file

Wenn ich diesen Befehl ausführe, obwohl der angegebene Host und Benutzername völliger Unsinn sind, erhalte ich immer noch genau die gleiche Ausgabe des Befehls ohne Fehler.

Hat jemand schon einmal darauf gestoßen oder weiß, was dies verursachen könnte?

War es hilfreich?

Lösung

Sie müssen den Namen einer gültigen Datenbank hinzufügen, zu der zunächst eine Verbindung hergestellt werden soll. Andernfalls wird der Inhalt einfach an STDOUT ausgegeben:

pg_restore --create --exit-on-error --verbose --dbname=postgres <backup_file>

Andere Tipps

Das ist immer noch verwirrend. Ich habe versucht, dieses Ding auszuführen, dass der --dbname die Datenbank sein sollte, die ich erstellen möchte.

pg_restore --create --exit-on-error --verbose --dbname=jiradb jiradb.tar

FALSCH !!

Es sollte buchstäblich --dbname postgres sein, das --create erstellt dann die echte Datenbank aus dem Namen in der Datei.In meinem Fall habe ich mit eine Teersicherung wiederhergestellt

pg_restore --create --exit-on-error --verbose --dbname=postgres jiradb.tar

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top