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にできるだけ近づけて構成し、デフォルトをオーバーライドすることです。