記一次 刪除 PostgresSql 數據庫 報錯:有 N 個其它會話正在使用數據庫 的解決方案

一、數據庫搭建

1、yum 指定目錄安裝

https://blog.csdn.net/llwy1428/article/details/105143053

2、yum 直接安裝

https://blog.csdn.net/llwy1428/article/details/102486414

3、編譯安裝

https://blog.csdn.net/llwy1428/article/details/95444151

4、PostgreSql 基本操作

https://blog.csdn.net/llwy1428/article/details/102598732

二、遇到的問題

在PostgreSQL 9.2 及以上版本,執行下面的語句:

postgres=# drop database dbtest;
# 執行刪除指定數據庫的時候,報以下錯誤
ERROR:  database "dbtest" is being accessed by other users
DETAIL:  There is 2 other session using the database.

或者使用 Navicat 等第三方數據庫連接工具,刪除指定數據庫的時候報以下錯誤:

說明此時有兩個客戶端在連接此數據庫,此時不能刪除數據庫。

如果確定要強制刪除此數據庫,那麼執行如下命令:

 

postgres=# SELECT pg_terminate_backend(pg_stat_activity.pid)
postgres-# FROM pg_stat_activity
postgres-# WHERE datname='dbtest' AND pid<>pg_backend_pid();
 pg_terminate_backend 
----------------------
 t
 t
 t
(3 rows)

執行上面的語句之後,在執行DROP操作,就可以刪除數據庫了。
上面語句說明:

pg_terminate_backend:用來終止與數據庫的連接的進程id的函數。

pg_stat_activity:是一個系統表,用於存儲服務進程的屬性和狀態。

pg_backend_pid():是一個系統函數,獲取附加到當前會話的服務器進程的ID。

 

此時再執行刪除數據庫的操作:

postgres=# drop database dbtest;
DROP DATABASE

強制刪除數據庫成功!

 

至此, 刪除數據庫報錯:有 N 個其它會話正在使用數據庫的問題已順利解決!

 

擴展

1、yum 安裝、配置 PgAdmin4

https://blog.csdn.net/llwy1428/article/details/102486511

2、數據庫安裝擴展

https://blog.csdn.net/llwy1428/article/details/105167524

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章