1. 程式人生 > >postgreSQL dropdb 時 還有會話沒有關閉

postgreSQL dropdb 時 還有會話沒有關閉

如果資料庫尚有活動連線,則drop資料庫時會失敗並有錯誤提示。

1 2 3 4 postgres=# DROP DATABASE testdb; ERROR:  database "testdb" is being accessed by other users DETAIL:  There are 3 other sessions using the database.

可以先用下面的語句把testdb的活動連線中止,然後再DROP資料庫就可以了。

1 2 3 4 5 6 7 8 9 10 postgres=# SELECT pg_terminate_backend(pid)
postgres-# FROM pg_stat_activity postgres-# WHERE datname='testdb' AND pid<>pg_backend_pid(); pg_terminate_backend ---------------------- t t t (3 rows)

pg_stat_activity是一個系統檢視,表中的每一行代表一個服務程序的屬性和狀態。

boolean pg_terminate_backend(pid int)是一個系統函式,用於終止一個後端服務程序。

int pg_backend_pid()系統函式用於獲取附加到當前會話的伺服器程序的ID