Postgres で接続されたデータベースを削除
現在接続しているデータベースを削除しようとしたときにエラーが発生しました: "pq:現在開いているデータベースを削除できません。」このエラーは、データベースへのアクティブな接続があるデータベースの削除を禁止する Postgres の予期された動作に起因します。
データベースを削除すると、データベースを参照している開いているすべての接続が無効になるため、この動作は理にかなっています。データベースを正常に削除するには、アクティブな接続が存在しないことを確認する必要があります。
推奨されるアプローチ
推奨されるアプローチは、別のデータベースに接続して DROP DATABASE コマンドを実行することです。そのつながりから。これにより、削除するデータベースへの開いている接続がないことが保証されます。
クライアントの強制切断
他のクライアントがデータベースに接続している状況の場合ドロップする必要がある場合は、強制的に切断できます。これにはスーパーユーザー権限が必要であることに注意してください。
PostgreSQL バージョン 9.2 より前の場合:
SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';
PostgreSQL バージョン 9.2 以降の場合:
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';
すべてのクライアントが強制的に切断されたら、次のことができます。別のデータベースに接続し、DROP DATABASE コマンドを再度実行してください。
追加の注意
特定のコード例では、DROP DATABASE の実行後に接続を閉じようとしています。指示。この手順は不要であり、予期しない動作を引き起こす可能性があります。 DROP DATABASE コマンドを実行する前に別のデータベースに接続するだけで、削除したデータベースへの接続が正常に閉じられます。
以上が現在接続している Postgres データベースを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。