Wie trenne ich mich von einer Datenbank und kehre zur Standarddatenbank in PostgreSQL zurück?

75

Ich verwende die PostgreSql-Version:

postgres=# select version();
                           version
-------------------------------------------------------------
 PostgreSQL 9.2.4, compiled by Visual C++ build 1600, 64-bit
(1 row)

Ich hatte eine Verbindung zu einer Datenbank von postgres=#bis newdb=#... Jetzt bin ich in der newdb=#Datenbank. Ich möchte die Verbindung trennen und zur postgres=#Datenbank zurückkehren.

Wie macht man das ?

Ich habe es mit versucht disconnect newdb;

aber es gibt erroe als ::

postgres=# create database newdb;
CREATE DATABASE
postgres=# \c newdb;
WARNING: Console code page (437) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
You are now connected to database "newdb" as user "postgres".
newdb=# disconnect newdb;
ERROR:  syntax error at or near "disconnect"
LINE 1: disconnect newdb;
        ^
newdb=#

Es funktioniert nicht. Gibt es einen anderen Weg, dies zu tun? Oder irre ich mich in irgendetwas?

09Q71AO534
quelle
Ich weiß, es scheint ein bisschen offensichtlich, aber haben Sie die psqlDokumentation überprüft ? Ein Hinweis - es gibt kein disconnectSQL oder psqlBefehl.
Milen A. Radev
In Postgres gibt es keine "Standarddatenbank". Sie müssen eine explizite Verbindung zu einer Datenbank herstellen, indem Sie\c
a_horse_with_no_name
Ist das, was passiert, können wir nicht die DISCONNECT-Dokumentation verwenden , um aus der Verbindung @a_horse_with_no_name
09Q71AO534
Darin gibt es eine Aussage, dass es einen Verbindungsnamen schließt, aber in diesem Szenario nicht funktioniert. Mein Verständnis ist falsch !! @a_horse_with_no_name
09Q71AO534
1
Was bedeutet dann die Dokumentation, die ich gefunden habe ? @Milen A. Radev
09Q71AO534

Antworten:

89

Es ist einfach, schauen Sie sich nur das Beispiel an.

- meine Datenbanken

postgres=# \l
                               List of databases
   Name    |  Owner   | Encoding | Collate | Ctype |     Access privileges     
-----------+----------+----------+---------+-------+---------------------------
 francs    | postgres | UTF8     | C       | C     | =Tc/postgres             +
           |          |          |         |       | postgres=CTc/postgres    +
           |          |          |         |       | francs=C*T*c*/postgres   +
           |          |          |         |       | select_only=c/francs
 postgres  | postgres | UTF8     | C       | C     | 
 source_db | postgres | UTF8     | C       | C     | =Tc/postgres             +
           |          |          |         |       | postgres=CTc/postgres    +
           |          |          |         |       | source_db=C*T*c*/postgres
 template0 | postgres | UTF8     | C       | C     | =c/postgres              +
           |          |          |         |       | postgres=CTc/postgres
 template1 | postgres | UTF8     | C       | C     | =c/postgres              +
           |          |          |         |       | postgres=CTc/postgres
(5 rows)

- Wechseln Sie als Rollenfranken zu DB-Franken

postgres=# \c francs francs
You are now connected to database "francs" as user "francs".

- Wechseln Sie zu db postgres als Rolle postgres

francs=> \c postgres postgres

You are now connected to database "postgres" as user "postgres".
postgres=# 

- von db trennen

postgres=# \q
Franken
quelle
3
es ist richtig, aber gibt es eine andere Möglichkeit, wie die Verwendung von DISCONNECT in SQL Documentation @ francs
09Q71AO534
1
@ user2561626: kann nein sein , Ich bin nicht sicher.
Franken
2
\ q beendet die Sitzung und wenn ich eine Verbindung zu einer anderen Datenbank herstellen möchte, muss ich \ q und dann \ c erneut. Es wird also die Datenbank beendet und keine Verbindung zu einer aktiven Sitzung getrennt.
Ayush
Ah, \ q beendet die Sitzung. Verdammt! tippte beendet;
Swatantra Kumar
40

In psql gibt es keine 'Trennung'. Anstatt die Verbindung zu Ihrer newdb-Datenbank zu trennen, stellen Sie eine Verbindung mit der Standard-Postgres-Datenbank her.

Erstellen Sie die neue Datenbank und stellen Sie eine Verbindung her:

postgres=# create database newdb;
CREATE DATABASE    
postgres=# \c newdb
You are now connected to database "newdb" as user "postgres".
newdb=#

Listen Sie die Anzahl der Verbindungen in newdb auf:

newdb=# select datname,numbackends from  pg_stat_database where datname='newdb';
 datname | numbackends
---------+-------------
 newdb   |           1

Anstatt die Verbindung zu trennen, stellen Sie jetzt einfach eine Verbindung mit der Standard-Postgres-Datenbank her.

newdb=# \c postgres
You are now connected to database "postgres" as user "postgres".
postgres=#

Jetzt gibt es keine Verbindungen auf newdb:

postgres=# select datname,numbackends from  pg_stat_database where datname='newdb';
 datname | numbackends
---------+-------------
 newdb   |           0
Hawkez
quelle
9
+1 für "Es gibt keine 'Trennung' in psql. Anstatt die Verbindung zu Ihrer newdb-Datenbank zu trennen, stellen Sie eine Verbindung mit der Standard-Postgres-Datenbank her." Es war nicht so offensichtlich für mich (Postgres Neuling)
Mariusz Pawelski
Das brauchte ich.
Mo1