問題1:重啓postgrsql服務器失敗
原因:因爲其他項目程序程序在訪問數據庫,所以重啓數據庫會失敗。
答案:
1把其他項目全部先關閉掉:#sudo /etc/init.d/lighttpd stop
2重新啓動postgresql服務器:#sudo /etc/init.d/postgresql start
問題2:刪除數據庫失敗:
原因:ERROR: database "cfb_s2" is being accessed by other users
描述: There are 246 other session(s) using the database.
答案:
1切換到數據庫擁有者的用戶 # su postgres
2進入psql #psql
3查看進程 #select procpid from pg_stat_activity where datname = '數據庫名字' and waiting='t';
4殺死查詢到的死鎖的進程 # kill 進程號
5執行刪除數據庫的操作 #drop database dataname(要刪除的數據庫名稱)
其他的一些查詢命令:
1查看所有的死鎖進程數 : #select * from pg_locks ;
2查詢所有數據庫的所有進程: #select * from pg_stat_activity; (其中顯示的字段中 prdcpid是進程號 ,waiting是否死鎖的狀態,如果顯示爲t 則是死鎖的進程)
3--數據庫處於恢復模式 退回到 -bash-3.2$ # ps -ef | grep post
注意事項:不要使用kill -9 殺 Postgresq 用戶進程 容易出現問題,我這麼操作後,結果導致 Postgresql 重啓失敗,解決方法見問題1。或者是其他情況,請看一下這篇文章有沒有幫助,鏈接