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


78

我正在使用PostgreSql版本:

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

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

这该怎么做 ?

我尝试过 disconnect newdb;

但它给人的错误是:

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

这是行不通的,还有其他方法可以做到这一点吗?否则我在任何事情上都错了!!


我知道这似乎很明显,但是您检查了psql文档吗?提示-没有disconnectSQL或psql命令。
Milen A. Radev

Postgres中没有“默认数据库”之类的东西。您需要使用\c
a_horse_with_no_name

这是发生了什么事情,我们不能使用DISCONNECT文档从连接中删除@a_horse_with_no_name
13年

在其中有一个声明,它关闭了一个connection_name,但在此senario中不起作用。据我所知,这是错误的!@a_horse_with_no_name
09Q71AO534

1
我发现文档是什么意思,@ Milen A. Radev
09Q71AO534

Answers:


90

很简单,只看示例。

-我的数据库

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)

-切换为法郎db francs

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

-与db postgres一起作为角色postgres

francs=> \c postgres postgres

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

-与数据库断开连接

postgres=# \q

3
没错,但是还有其他方法
吗,

1
@ user2561626:可能不是,我不确定。
法郎

2
\ q将退出会话,如果我想连接到其他数据库,则需要先\ q然后再\ c。因此,从数据库退出,没有从一个活动会话断开连接。
Ayush

啊,\ q退出了会话。该死的!正在输入quit;
Swatantra Kumar,

41

psql中没有“断开连接”。与默认的postgres数据库连接,而不是断开与newdb数据库的连接。

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

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

列出newdb上的连接数:

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

现在,无需断开连接,只需连接默认的postgres数据库即可。

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

现在在newdb上没有任何连接:

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

10
+1为“ psql中没有'disconnect'。与默认数据库postgres连接而不是与newdb数据库断开连接。”。对我来说不是那么明显(Postgres newbie)
Mariusz Pawelski

这就是我所需要的。
MO1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.