DebianまたはUbuntuなどのDebian派生物用にパッケージ化されたPostgreSQLの規則は、/var/run/postgresqlを使用することです。 Unixドメインソケットのディレクトリとして。一方、自己コンパイルされたpostgresクライアントライブラリの規則は、/tmpを使用することです。 、別の方法で自己構成しない限り。
したがって、両方の間のこの不一致の通常の根本的な原因は、自己コンパイルされたクライアント側のものと事前にコンパイルされたサーバー側パッケージの混合です(クライアントとサーバーが同じマシンにインストールされている場合でも、クライアント側とサーバー側はまだ明確であり、同期していない可能性があります。
/tmpからのソフトリンク 一般に/tmpであるため、再起動するたびにリンクが失われることを除いて、askerによって提案されたこのディレクトリへのアクセスは機能します。 再起動時に空になります。
より良いオプションは、database.ymlのエントリとして追加することです。 :
-
host: /tmpのいずれか 実際のソケットパスが/tmpの場合 (自己コンパイルサーバー、パッケージクライアント) -
または
host: /var/run/postgresql実際のソケットパス/var/run/postgresql/の場合 (パッケージ化されたサーバー、自己コンパイルされたクライアント)。
ホストフィールドの値がスラッシュ文字で始まる場合、postgresライブラリは、それがホスト名ではなくローカルソケットのディレクトリの場所であることを認識します。ディレクトリ.s.PGSQL.portnumber内のファイル名 が生成され、指定することはできません。ディレクトリのみです。
もう1つの可能性は、自己コンパイルされたソフトウェアパッケージをDebianにできるだけ近づけて構成し、デフォルトをオーバーライドすることです。