2017-07-12 13 views
0

を変更する方法:私はphppgadminのデータベース名を変更しようとしているが、私はいつもこのエラーを取得していたデータベース名

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

誰も私は、このエラーを理解していない私を除いてアクセスされていません。

データベース名を変更するにはどうしたらいいですか、データベースを使用している他の19のセッションがあっても強制的に行うことはできますか?

ありがとうございます

+0

が、私は「誰もが」そのデータベースを使用していないことをあなたの主張、より多くの(「19回の他のセッション」)のPostgresを信じるように傾いています。おそらく、これらの19セッションはすべて、あなたのクライアントからのものである可能性があります。 'select * from pg_stat_activity'を実行して –

+0

を確認してください。接続を正しく終了しましたか?それ以外の場合は、データベースの名前を変更する前に接続を強制的に閉じてください。 – martennis

答えて

0

いくつかの自動接続があります。このクエリを実行する前に

SELECT 
    pg_terminate_backend(pid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection! 
    pid <> pg_backend_pid() 
    -- don't kill the connections to other databases 
    AND datname = 'database_name' 
    ; 

、あなたが新しい接続を避けるためにCONNECT権限を取り消すする必要があります:あなたは、最初のコマンドの下に使用して、DBへのすべての接続を終了させることができる上記の後

REVOKE CONNECT ON DATABASE dbname FROM PUBLIC, username; 

If you're using Postgres 8.4-9.1 use procpid instead of pid 

SELECT 
    pg_terminate_backend(procpid) 
FROM 
    pg_stat_activity 
WHERE 
    -- don't kill my own connection! 
    procpid <> pg_backend_pid() 
    -- don't kill the connections to other databases 
    AND datname = 'database_name' 
    ; 

を、してみてくださいあなたのDBの名前を変更します。

参照:今後の参考のためKill a postgresql session/connection

UPDATE

、次のことができるようにする必要があります

-

\c postgres 

を名前を変更するデータベースからの切断 - データベースから他のすべてのクライアントを強制的に切断して、名前を変更します。

SELECT pg_terminate_backend(pid) 
FROM pg_stat_activity 
WHERE pid <> pg_backend_pid() 
    AND datname = 'name of database'; 

- データベース(それは今やゼロクライアントを有していなければならない)そのテーブルをpg_stat_activity列PIDが9.2より前のバージョンにprocpidと命名した

ALTER DATABASE "name of database" RENAME TO "new name of database"; 

注リネーム。したがって、PostgreSQLのバージョンが9.2より低い場合は、pidの代わりにprocpidを使用してください。

参照:PostgreSQL - Rename database

+0

19のセクションが殺されましたが、私はまだ 'DETAIL:データベースを使用している5つのセッションがあります。'というメッセージが表示され、2回目のコマンドを実行した後もデータベースを使用して5つのセッションが残ります。 – qwerty123

+0

それによって:sudo service postgresql restart – techhunter

+0

質問にあなたの質問を投稿してください。 – techhunter

関連する問題