私は、Postgre DB サーバーを経由して、次に示すように 2 つの異なる SQL ファイルを実行するこのバッチ ファイルを実行しようとしています。
set PGPASSWORD=blah
cls
@echo on
"C:\Progra~1\pgAdmin III\1.16\psql" -d [db name] -h [server name] -p 5432 -U postgres -f C:\query1.sql
"C:\Progra~1\pgAdmin III\1.16\psql" -d [db name] -h [server name] -p 5432 -U postgres -f C:\query2.sql
しかし、クエリ 1 またはクエリ 2 のコマンドで次のエラーが発生することがあるという問題が発生します。
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
これは時々起こるだけなので、なぜ起こるのかよく分かりません。なぜそうなるのか、またこの問題の解決策があるのかどうか、誰か説明してもらえませんか。よろしくお願いします!
更新: 実際の Postgre アプリケーションでリモート サーバーを開こうとすると、同じエラーが時々発生します: 「エラーが発生しました: サーバーが予期せず接続を閉じました。これは、要求の処理前または処理中にサーバーが異常終了したことを意味します。」
エラー ポップアップをクリックして閉じた直後に、この Guru Hint も表示されます。
データベース エンコーディング VA-trac データベースは、SQL_ASCII エンコーディングを使用してデータを格納するために作成されます。このエンコーディングは 7 ビット文字のみに定義されています。8 番目のビットが設定されている文字 (非 ASCII 文字 127-255) の意味は定義されていません。したがって、サーバーがデータを他のエンコーディングに変換することはできません。データベースに非 ASCII データを格納する場合は、必要に応じて異なるクライアント エンコーディングへの自動変換のメリットを享受できるように、ロケール文字セットを表す適切なデータベース エンコーディングを使用することを強くお勧めします。SQL_ASCII データベースに非 ASCII データを格納すると、コード変換の問題によって、データベースに書き込まれたりデータベースから読み取られたりする奇妙な文字が発生する可能性があります。これは、異なるクライアント プログラムやドライバーを使用してデータベースにアクセスするときに、大きな問題となる可能性があります。ほとんどのインストールでは、Unicode (UTF8) エンコーディングが最も柔軟な機能を提供します。
いずれにせよ、その後もサーバーは開き、その時点からデータベースにアクセスできるようになります。
ベストアンサー1
情報としてここに残しておきます、
このエラーは、PostgreSQLサーバーが別のマシンにあり、外部インターフェースをリッスンしていない。
この特定の問題をデバッグするには、次の手順に従います。
- postgresql.confを見てください。
sudo vim /etc/postgresql/9.3/main/postgresql.conf
- 次の行を追加します:
listen_addresses = '*'
- サービスを再起動する
sudo /etc/init.d/postgresql restart
(注: 上記のコマンドは Ubuntu 用です。他の Linux ディストリビューションや OS では、これらのファイルへのパスが異なる場合があります)
注意:'*'
リスニング アドレスに使用すると、すべてのインターフェイスでリッスンします。 を使用すると、'0.0.0.0'
すべての IPv4 をリッスンし、 を使用すると'::'
、すべての IPv6 をリッスンします。