postgresql數據庫刪除時提示回話 sessions using the database


數據庫命令行或者管理工具中執行刪除數據庫的命令,

DROP DATABASE testdb;

的時候,可能會提示:

ERROR:  database "testdb" is being accessed by other users
DETAIL:  There are 3 other sessions using the database.

這個意思是說,刪除數據庫失敗,因為這里還有3個鏈接連接到該數據庫上,PostgreSQL在有進程連接到數據庫時,對應的數據庫是不運行被刪除的。

那么怎么辦呢?
解決方式:斷開連接到這個數據庫上的所有鏈接,再刪除數據庫。怎么斷開呢?在PostgreSQL 9.2 及以上版本,執行下面的語句:

SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname='testdb' AND pid<>pg_backend_pid(); 
--- 注:testdb 替換成自己的數據庫

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

上面語句說明:
pg_terminate_backend:用來終止與數據庫的連接的進程id的函數。
pg_stat_activity:是一個系統表,用於存儲服務進程的屬性和狀態。
pg_backend_pid():是一個系統函數,獲取附加到當前會話的服務器進程的ID。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM