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?


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

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.