如何断开与数据库的连接并返回PostgreSQL中的默认数据库?

09Q*_*534 66 postgresql postgresql-9.1 postgresql-9.2

我正在使用PostgreSql版本:

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

我从连接到数据库postgres=#来newdb=#....现在我在newdb=#数据库中,我想拔掉,然后返回到postgres=#数据库....

这该怎么做 ?

我试过了 disconnect newdb;

但它给了erroe ::

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=#
Run Code Online (Sandbox Code Playgroud)

它没有工作是否有任何其他方式这样做或我错了什么!

fra*_*ncs 80

这很简单,只看一个例子.

- 我的数据库

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)
Run Code Online (Sandbox Code Playgroud)

- 切换到db francs作为角色法郎

postgres=# \c francs francs
You are now connected to database "francs" as user "francs".
Run Code Online (Sandbox Code Playgroud)

- 转换为db postgres作为角色postgres

francs=> \c postgres postgres

You are now connected to database "postgres" as user "postgres".
postgres=# 
Run Code Online (Sandbox Code Playgroud)

- 断开与db的连接

postgres=# \q
Run Code Online (Sandbox Code Playgroud)

  • 它是正确的,但有没有任何其他方式,如在SQL [文档]中使用DISCONNECT(http://www.postgresql.org/docs/9.1/static/ecpg-sql-disconnect.html)@ francs (3认同)
  • \q 将退出会话,如果我想连接到其他一些数据库,那么我需要 \q 然后再次 \c。所以从数据库退出,没有与一个活动会话断开连接。 (3认同)

Haw*_*kez 37

psql中没有"断开连接".您可以使用默认的postgres数据库连接而不是从newdb数据库断开连接.

创建新数据库并连接到它:

postgres=# create database newdb;
CREATE DATABASE    
postgres=# \c newdb
You are now connected to database "newdb" as user "postgres".
newdb=#
Run Code Online (Sandbox Code Playgroud)

列出newdb上的连接数:

newdb=# select datname,numbackends from  pg_stat_database where datname='newdb';
 datname | numbackends
---------+-------------
 newdb   |           1
Run Code Online (Sandbox Code Playgroud)

现在,只需连接默认的postgres数据库,而不是断开连接.

newdb=# \c postgres
You are now connected to database "postgres" as user "postgres".
postgres=#
Run Code Online (Sandbox Code Playgroud)

现在newdb上没有连接:

postgres=# select datname,numbackends from  pg_stat_database where datname='newdb';
 datname | numbackends
---------+-------------
 newdb   |           0
Run Code Online (Sandbox Code Playgroud)

  • +1"for psql中没有'断开连接'.而不是从newdb数据库断开连接,而是使用默认的postgres数据库连接." 这对我来说不是那么明显(Postgres新手) (7认同)