2013-07-31 2 views
37

Ich verwende PostgreSql Version:Wie trennt man sich von einer Datenbank und geht zurück zur Standarddatenbank in PostgreSQL?

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

i auf eine Datenbank postgres=#-newdb=# verbunden war .... jetzt bin ich in newdb=# Database ich will es trennen und wieder zu postgres=# Datenbank gehen. ...

Wie geht das?

Ich habe versucht, mit disconnect newdb;

aber seine geben 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 Arbeit ist nicht gibt es eine andere Möglichkeit, dies zu tun, oder bin ich in etwas falsch !!

+0

Ich weiß, es ist ein bisschen scheint offensichtlich, aber haben Sie die [ 'psql' Dokumentation] geprüft (http://www.postgresql.org /docs/current/static/app-psql.html)? Ein Hinweis - es gibt keinen 'disconnect' SQL oder' psql' Befehl. –

+0

In Postgres gibt es keine "Standarddatenbank". Sie müssen explizit eine Verbindung zu einer Datenbank herstellen mit '\ c' –

+0

Ist das, was passiert können wir nicht [DISCONNECT Dokumentation] (http://www.postgresql.org/docs/9.1/static/ecpg-sql-disconnect.html) um aus der Verbindung heraus zu kommen @a_horse_with_no_name – 09Q71AO534

Antwort

50

Es ist einfach, schau nur das Beispiel.

--Mein 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) 

- Schalter auf db Franken als Rolle Franken

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

- swith db Postgres als Rolle Postgres

francs=> \c postgres postgres 

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

- trennen db

postgres=# \q 
+3

ist es richtig, aber gibt es eine andere Möglichkeit wie DISCONNECT in SQL verwenden [Dokumentation] (http://www.postgresql.org/docs/9.1/static/ecpg-sql-disconnect.html) @ Franken – 09Q71AO534

+1

@ user2561626: kann nein, ich 'ich bin mir nicht sicher. – francs

+0

\ q beendet die Sitzung und wenn ich mit einer anderen DB verbinden möchte, dann müsste ich \ q und then \ c erneut. Also gibt es aus der Datenbank beendet, keine Trennung von einer aktiven Sitzung. – Ayush

18

Es gibt keine 'Trennung' in psql. Anstatt die Verbindung zu Ihrer Newdb-Datenbank zu trennen, verbinden Sie sich mit der Standard-Postgres-Datenbank.

die neue Datenbank erstellen und eine Verbindung zu ihm:

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

Liste der Anzahl der Verbindungen auf newdb:

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

Statt nun trennen, schließen Sie einfach mit der Standard-Postgres-Datenbank.

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 
+0

+1 für "Es gibt keine 'Trennung' in psql. Anstatt die Verbindung zur newdb-Datenbank zu trennen, verbinden Sie sich mit der Standard-postgres-Datenbank.". Es war nicht so offensichtlich für mich (Postgres Newbie) –

Verwandte Themen