Datenbank kopieren?

Hallo,

ich versuche gerade auf einem Testsystem eine Kopie einer bestehenden Datenbank zu erstellen. Hierbei bin ich wie folgt vorgegangen:

SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'test_db' AND pid <> pg_backend_pid();
CREATE DATABASE test_db_new
    WITH
    OWNER = postgres
    TEMPLATE = test_db
    ENCODING = 'UTF8'
    CONNECTION LIMIT = -1
    IS_TEMPLATE = False;

Nun habe ich das Phänomen, dass ich die neue Datenbank in pgAdmin sehen kann die ursprüngliche aber nicht.

Ein Neustart (sowohl des Datenbankservers als auch von pgAdmin hat nicht geholfen.

Was habe ich falsch gemacht? Wie bekomme ich die ursprüngliche Datenbank wieder ans Laufen? Diese scheint noch zu existieren, denn der Versuch eine neue mit dem gleichen Namen anzulegen scheitert mit der Meldung:

ERROR:  database "test_db" already exists

SQL state: 42P04

Gibt es evtl. einen besseren Weg?

Ganz offensichtlich wurde die Datenbank angelegt. Du kannst mit

select *
from pg_database
where datname like 'test%'

überprüfen welche wirklich vorhanden sind.

Warum aber pgAdmin die nicht mehr “sieht” kann ich nicht sagen (was auch immer “sehen” hier bedeutet)

Mit dieser Abfrage bekomme ich das folgende Ergebnis.

oid datname datdba encoding datcollate datctype datistemplate datallowconn datconnlimit datlastsysoid datfrozenxid datminmxid dattablespace datacl
19284 test_db 10 6 en_US.UTF-8 en_US.UTF-8 True True -1 13446 50911 1 1663 <daten manuell gelöscht>
1929696 test_db_new 10 6 en_US.UTF-8 en_US.UTF-8 False True -1 13446 50911 1 1663 NULL

Muss ich evtl. die Spalte “datistemplate” auf “False” setzen?

“Sehen” bedeutet in diesem Fall das sie in der Datenbankliste (Instanzen?1?) nicht aufgelistet wird.

unnamed1

Hilft das bei der Fehleranalyse?

Ich habe es gefunden. Irgendwo habe ich in der pgAdmin-Oberfläche das Original als ein Templatedatenbank umgewandelt. Diese werden von der GUI offensichtlich ausgeblendet. Mit dem Befehl:

ALTER DATABASE test_db WITH is_template FALSE;

konnte ich das korrigieren. Nach einem refresh der Ansicht wird die Datenbank jetzt wieder aufgelistet.

Wie üblich saß das Problem 30 cm vor dem Bildschirm. Sorry, das ich eure Aufmerksamkeit beansprucht habe.

Keine Ahnung wie pgAdmin diese Liste erstellt, aber test_db ist ja als Template markiert.

Vielleicht filtert pgAdmin die raus? Versuch mal

alter database test_db with is_template false;
1 „Gefällt mir“