152

データベースの名前を変更する必要がありますが、名前を変更すると PGAdmin : ALTER DATABASE "databaseName" RENAME TO "databaseNameOld"、それはできないと言われました。

どうすればいいですか?

( WindowsXP ではバージョン 8.3 )

アップデート

  • 最初のエラー メッセージ: 接続できませんでした。そこで、別のデータベースを選択してクエリを実行しました。

  • ユーザーが接続されたことを示す 2 番目のエラー メッセージが表示されます。PGAdmin画面にたくさんいるのにPID、アクティブでないことがわかります...それらを殺す方法がわかりません。

4

7 に答える 7

210

データベース名を引用しないようにしてください:

ALTER DATABASE people RENAME TO customers;

また、その時点で他のクライアントがデータベースに接続していないことも確認してください。最後に、返されたエラー メッセージを投稿してみてください。そうすれば、もう少し詳しい情報を得ることができます。

于 2008-09-27T15:03:27.477 に答える
100

今後の参考のために、次のことができるはずです。

-- disconnect from the database to be renamed
\c postgres

-- force disconnect all other clients from the database to be renamed
SELECT pg_terminate_backend( pid )
FROM pg_stat_activity
WHERE pid <> pg_backend_pid( )
    AND datname = 'name of database';

-- rename the database (it should now have zero clients)
ALTER DATABASE "name of database" RENAME TO "new name of database";

テーブルのpg_stat_activity列のpid名前はprocpid、9.2 より前のバージョンと同じであることに注意してください。したがって、PostgreSQL のバージョンが 9.2 より前の場合は、procpid代わりにpid.

于 2011-10-06T18:43:49.377 に答える
3

核兵器を配備する(サーバーを再起動する)代わりに、接続元を見つけてクライアントプロセスをシャットダウンするか、pg_cancel_backend()関数を使用して、煩わしい接続を閉じてみてください。

于 2008-09-27T15:43:10.470 に答える
3

Unexist はコメントでデータベースを再起動するように言ってくれましたが、うまくいきました! データベースを再起動すると、既存の接続がすべて終了し、他のデータベースに接続して、最初のクエリで名前を変更できました。

ありがとうございます。

于 2008-09-27T15:16:02.733 に答える