ich bin eben dabei, ein Backup/Restore per Code zu schreiben. Ich stolpere aber noch darüber, dass die Restore-Funktion meine Datenbank nicht korrekt wiederherstellt. Ich denke, dass ich noch ein Verständnisproblem habe. Ich benutze die “pg_dump” sowie “pg_restore” Programme.
Das Restore mündet in jeder Menge Fehler und sagt, dass die Relationen bereits vorhanden wären. Im Endergebnis bleibt die Datenbank unverändert. Ich war irgendwie der Meinung, dass die Optionen -C -c genau dafür da wären, die vorhandene Datenbank aufzuräumen. Im PG-Admin passiert das gleiche. Dort kann man ja in den Restore-Optionen wählen “Include CREATE Database” sowie “clean before restore”. Das ändert gar nix, die bestehende Datenbank wird nicht überschrieben.
-d gibt eine DB zum Initial Connect an, nicht die DB, die Du bearbeiten willst. Die steckt im Script.
Also connecte zu irgendeiner DB, z.B. Postgres oder Template (natürlich auf dem gleichen Host, wo erzeugt werden soll).
Ah, danke dir. Mittlerweile habe ich herausgefunden, dass die doppelte Angaben von -C und -c auch ein Problem ist. Ich verwende jetzt nur -c und damit versucht nun das System, die wiederherzustellende Datenbank zu putzen. Leider klappt das nicht so recht, da aufgrund von Abhängigkeiten zwischen den Tabellen bestimmte Tabellen nicht gelöscht werden können. Das ist jetzt etwas unschön, da somit die wiederhergestellte Datenbank nicht 1:1 dem gesicherten Stand entspricht. Wahrscheinlich werde ich vor dem Wiederherstellen die Zieldatenbank löschen müssen.
Ich hatte ein vergleichbares Problem. Ich habe die Datenbanken aus einer PG12 gesichert und wollte sie in einer PG14 importieren. Ich habe es mit PGAdmin gemacht. Dort kamen auch immer Hinweise, dass etwas schon existiere. Trotz der Funktion "Include CREATE Database”.
Bei einfachen Datenbanken hat es dennoch funktioniert. Die Datenbanken mit ForeignTables habe ich dann neu aufgebaut. Waren sehr kleine Datenbanken.