2013-07-31 37 views
37

Tôi đang sử dụng phiên bản PostgreSQL:Làm thế nào để ngắt kết nối khỏi cơ sở dữ liệu và quay trở lại cơ sở dữ liệu mặc định trong PostgreSQL?

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

tôi đã kết nối với một cơ sở dữ liệu postgres=#-newdb=# .... Bây giờ tôi đang ở newdb=# Cơ sở dữ liệu tôi muốn ngắt kết nối nó và quay trở lại postgres=# cơ sở dữ liệu. ...

Cách thực hiện việc này?

Tôi đã thử với disconnect newdb;

nhưng erroe cho nó như là ::

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

nó isnt làm việc là có cách nào khác để làm điều này hay am i sai trong bất cứ điều gì !!

+0

Tôi biết nó có vẻ hơi rõ ràng, nhưng có bạn kiểm tra [ 'tài liệu psql'] (http://www.postgresql.org /docs/current/static/app-psql.html)? Một gợi ý - không có lệnh 'disconnect' SQL hoặc' psql'. –

+0

Không có thứ như "cơ sở dữ liệu mặc định" trong Postgres. Bạn cần phải kết nối một cách dễ dàng với một cơ sở dữ liệu bằng cách sử dụng '\ c' –

+0

Đó có phải là điều xảy ra không, chúng tôi sử dụng [tài liệu DISCONNECT] (http://www.postgresql.org/docs/9.1/static/ecpg-sql-disconnect.html) để thoát khỏi kết nối @a_horse_with_no_name – 09Q71AO534

Trả lời

50

Thật dễ dàng, chỉ cần xem ví dụ.

cơ sở dữ liệu --my

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) 

- chuyển sang franc db như vai trò franc

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

- Swith để db postgres như vai trò postgres

francs=> \c postgres postgres 

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

- ngắt kết nối từ db

postgres=# \q 
+3

nó đúng nhưng là có cách nào khác như sử dụng DISCONNECT trong SQL [Tài liệu] (http://www.postgresql.org/docs/9.1/static/ecpg-sql-disconnect.html) @ francs – 09Q71AO534

+1

@ user2561626: có thể không có , Tôi 'tôi không chắc. – francs

+0

\ q sẽ thoát khỏi phiên và nếu tôi muốn kết nối với một số DB khác thì tôi cần \ q và sau đó \ c lại. Vì vậy, có bỏ thuốc lá từ cơ sở dữ liệu, không có ngắt kết nối từ một phiên hoạt động. – Ayush

18

Không có một 'ngắt kết nối' trong psql. Thay vì ngắt kết nối khỏi cơ sở dữ liệu newdb của bạn, bạn kết nối với cơ sở dữ liệu postgres mặc định.

Tạo cơ sở dữ liệu mới và kết nối với nó:

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

Danh sách số lượng kết nối trên newdb:

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

Bây giờ, thay vì ngắt kết nối, chỉ cần kết nối với cơ sở dữ liệu Postgres mặc định.

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

Bây giờ không có kết nối trên newdb:

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

+1 cho "Không có 'ngắt kết nối' trong psql. Thay vì ngắt kết nối khỏi cơ sở dữ liệu newdb của bạn, bạn kết nối với cơ sở dữ liệu postgres mặc định.". Điều đó không rõ ràng đối với tôi (Postgres newbie) –

Các vấn đề liên quan