2013-07-31 12 views
37

używam wersji PostgreSQL:Jak odłączyć się od bazy danych i wrócić do domyślnej bazy danych w PostgreSQL?

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

miałem podłączony do bazy danych z postgres=# do newdb=# .... teraz jestem w newdb=# Database chcę odłączyć go i wrócić do postgres=# bazie. ...

Jak to zrobić?

Próbowałem z disconnect newdb;

ale jego dając erroe jak ::

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=# 

isnt pracy jest jakiś inny sposób to zrobić, czy nie mam racji w niczym !!

+0

Wiem, że to wydaje się nieco oczywiste, ale czy sprawdził dokumentację psql' [ '] (http://www.postgresql.org /docs/current/static/app-psql.html)? Podpowiedź - nie ma komendy 'disconnect' SQL ani' psql'. –

+0

Nie ma czegoś takiego jak "domyślna baza danych" w Postgresie. Musisz wyraźnie połączyć się z jedną bazą danych używając '\ c' –

+0

Czy to się dzieje, gdy nie używamy [dokumentacji DISCONNECT] (http://www.postgresql.org/docs/9.1/static/ecpg-sql-disconnect.html) za wydostanie się z połączenia @a_horse_with_no_name – 09Q71AO534

Odpowiedz

50

To proste, wystarczy spojrzeć na przykład.

--my baz

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) 

- przełącznik do db franków jako franków naśladowania

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

- swith db postgres jak PostgreSQL naśladowania

francs=> \c postgres postgres 

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

- odłączyć od db

postgres=# \q 
+3

jest w porządku, ale czy istnieje inny sposób, taki jak użycie DISCONNECT w SQL [Dokumentacja] (http://www.postgresql.org/docs/9.1/static/ecpg-sql-disconnect.html) @ francs – 09Q71AO534

+1

@ user2561626: może być nie, I nie jestem pewien. – francs

+0

\ q zakończy sesję i jeśli chcę połączyć się z innym DB, będę musiał \ q, a następnie \ c ponownie. Tak więc jest wyjście z bazy danych, brak rozłączenia z jedną aktywną sesją. – Ayush

18

Nie ma 'rozłącz' w psql. Zamiast odłączać się od bazy danych newdb, łączysz się z domyślną bazą danych postgres.

Utwórz nową bazę danych i połączyć się z nim:

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

notować liczbę połączeń na NEWDB:

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

Teraz, zamiast odłączania, po prostu połączyć się z bazą danych PostgreSQL domyślne.

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

Teraz nie ma połączenia na NEWDB:

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

+1 dla "Nie ma" rozłączenia "w psql. Zamiast rozłączać się z bazą danych newdb łączysz się z domyślną bazą danych postgres.". To nie było tak oczywiste dla mnie (Postgres newbie) –

Powiązane problemy