2016-05-01 13 views
3

PostgreSQLはTCPソケットではなくUNIXソケットを使用することをサポートしています。 Unixソケットを使用するには、次のブロックをどのように設定するのですか?postgresqlでソケットを使用するようにphoenixを設定するには

# Configure your database 
config :my_app, Sample.Repo, 
    adapter: Ecto.Adapters.Postgres, 
    database: "ecto_simple", 
    username: "postgres", 
    password: "postgres" 
+0

Postgrex(Ectoが使用するElixir PostgreSQLドライバ)は、Unixソケット経由の接続をサポートしていません。 – Dogbert

+0

@Dogbertいくつかのドキュメントを見て、あなたが正しいかもしれないと思います。 – steakunderscore

答えて

1

2018年3月現在、Postgrexはソケット経由の接続をサポートしています。

これは、socketまたはsocket_dirオプションを指定することによって実行できます。ここではchangelogを、ここではこれを選択し、source codeにはすべてのオプションの網羅的なリストがあります。ソースコードから

    :socket_dir
  • - 指定したディレクトリ内のUNIXソケットを介してのPostgresに接続します。 ソケット名は、部品に基づいて導出されます。これは、ソケットの設定に好ましい方法であり、ホスト名よりも優先されます。 Postgres以外のソケットに を接続する場合は、代わりに:socketを使用してください。

  • :socket - 指定されたパスにUNIXソケット経由で接続します。

あなたが唯一のプロキシ接続を介して動作localhostを通じSQLプロキシ(127.0.01)を介して接続する必要がありますAppEngineのにしている場合、これは(私は仮定)特に便利です。

0

PostgreSQLは、パフォーマンスとプライバシーの理由から、UNIXソケットとTCPソケットを優先します。まだ利用できない場合:簡単な文書に従ってアクセスすることができれば、サーバ上でTCPを有効にすることができます。

クライアント接続のアベニューは、環境変数、特にPGHOSTによって設定されます。 libpqのような経験豊富なドライバからは、そのように動作することを期待しています。もしPostgrexがそうでなかったら、それは衝撃的です。 参照:https://hexdocs.pm/postgrex/Postgrex.html

PGHOSTで提供される値は、ファイル "postgresql.conf"に示されているように、サーバーの構成によって異なります。

ソケットのディレクトリを作成してアクセス許可を設定する必要がある可能性があります。以下は役に立ちます:http://iamvery.com/2013/06/17/postgresapp-with-unix-socket.html

もっと正確な答えを得るには、オペレーティングシステムとバージョンについて言及する必要があります。あなたのPostgreSQLのバージョンも。

関連する問題