2

PostgreSQL サーバーのポートを変更したため、作成されるソケットの名前は ".s.PGSQL.5432" ではなくなりました。

Rails/pg gem を更新/強制して、探しているソケット名を変更する方法はありますか? 推奨事項に従って pg gem をアンインストール/再インストールしようとしましたが、必要な .s.PGSQL.50000 ではなく、database.yml コメントに従って、.s.PGSQL.5432 という名前のソケットを検索しようとします。 「socket」設定行は PostgreSQL には適用されません。

  • 私は明らかにシンボリックリンクを作成できますが、これを回避するよりエレガントな方法があることを望んでいました.
4

1 に答える 1

2

database.yml のポートを変更します

ご存知のように、PostgreSQL は 2 種類の接続をサポートしています: tcp/ip と unix ドメイン ソケットです。どちらもホストとポートを使用できますが、使用方法が異なります。

TCP/IP を使用する場合、ホストとポートは、TCP/IP を実行しているネットワークに関して標準的な意味を持ちます。

Unix ドメイン ソケットを使用する場合、host はディレクトリを提供し、port はソケット名の数値部分を提供します。パスは絶対パスにする必要があります。同じことが libpq ベースの接続 (pg gem を介したものを含む) にも当てはまるはずなので、次のことを考慮してください。

 psql -h /tmp -p 5000 

これにより、次のエラー メッセージが表示されます。

$ psql -h /tmp -p 5000 
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5000"?

同様に:

$ psql -h /foo -p 50000 
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/foo/.s.PGSQL.50000"?
于 2013-05-05T08:16:17.607 に答える