データベースをホストするためにpostgres.heroku.comを使用しています。つまり、サーバー設定を変更する方法がありません。したがって、 this 質問への回答は役に立ちません。 Herokuは設定を変更するつもりはありません(私は連絡しました)。
接続を維持するためにPgAdmin IIIをハッキングする最良の方法は何でしょうか。 PgAdminがバックグラウンドで動作しているときにユーザーインターフェースのアクションを自動化するAutohotkeyマクロを作成したり、何らかのネットワークツールを使用してPgAdminsに代わってネットワークメッセージを強制的に送信したりすることを考えています。
また、PgAmin IIIのコードに変更するための500ドルのオファーも受け取りました。 PgAdminの開発者は、Herokuのためにコードを変更しません。
私は何をすべきか? PgAdminは多くの点で優れていますが、この欠点があります。
libpq
、基になるPostgreSQLクライアントライブラリ keepalives
オプションを有効にしてTCPキープアライブ を有効にします。
PgAdmin-IIIでは任意の接続パラメータを直接指定できないようですが、回避策があります。
PgAdmin-IIIの接続構成を見ると、「サービス」オプションが表示されます。これは 接続サービスファイル を参照します。これを使用するには、次のような内容の~/.pg_service.conf
を作成します。
[myherokudb]
user=myusername
keepalives=1
connect_timeout=20
keepalives_idle=10
pgAdmin-IIIから接続する場合は、myherokudb
フィールドにservice
と入力します。
これにより、PgAdmin-IIIは、キープアライブの有効化を含め、サービスファイルで指定された接続パラメーターを使用します。
(Windowsを使用している場合、サービスファイルは別の場所にある可能性があります。ドキュメントを参照してください)。
キープアライブを制御するためのlibpq
には環境変数がないため、そのように設定することはできません。サービスファイルを使用する必要があります。
PgAdmin-IIIへの追加の接続パラメーターのサポート、または接続オプションのキープアライブパラメーターを制御するためのチェックボックスを追加することは、かなり簡単なはずです。デイブはあなたが仕事に資金を提供するというあなたの申し出についてあなたが求めていたものを理解したのだろうか。
Update:サービスファイルは、PGSYSCONFDIR
環境変数で指定された場所で検索されます。設定されていない場合、デフォルトでプラットフォーム固有の場所に設定されますが、Windowsでは適切に文書化されていないようです。ドキュメントのパッチを提出します。 .pgpass
のドキュメントでは、パスが%APPDATA%\postgresql\pgpass.conf
と表示されているため、~/.pg_service.conf
は%APPDATA%\postgresql\pg_service.conf
である必要がありますが、そうではありません。 。
実際、正しいパスは次のとおりです。
%APPDATA%\postgresql\.pg_service.conf
そう:
私はWindowsでテストしましたが、WindowsではPgAdmin-IIIのHost
フィールドを空白のままにすることはできません。 PgAdmin-IIIは、サービスファイルで指定されたすべてのホストを、接続ダイアログで指定されたもので上書きするようです。そのため、サービスファイルにHost
キーを含めないでください。 (私はバグを報告します)。
Windowsでは「既知のファイルタイプのファイル拡張子を非表示にする」がオフになっているため、誤って.pg_service.conf.txt
と呼ばないようにしてください。名前が正しいかどうかわからない場合は、リストビューでWindowsエクスプローラーの[タイプ]列を確認してください。 .pg_service.conf.txt
の名前が正しくない場合は「テキストドキュメント」と読み、CONF File
の名前が正しい場合は.pg_service.conf
と読みます。名前の変更に問題がある場合は、「既知のファイルタイプのファイル拡張子を非表示にする」をオフにするか、 notepad ++ などの適切なテキストエディタを使用して、好きな名前のファイルを作成できます。
ファイル名の先頭のピリオド(ドット)に注意してください。はい、それはpgpass.conf
とは異なります。そして、はい、それは迷惑で、バグに接しています。