21

システム(OSX 10.8、クリーンインストール)でPostgreSQLをセットアップしようとしましたが、、などの使用psqlで問題が発生しcreatedbました。さまざまな解決策を試しましたが、どれも機能しないようです。

インストールは成功し、次を使用して既知のソケットの問題を修正しました。

mkdir /var/pgsql_socket 
sudo chown $USER /var/pgsql_socket

それから私は編集しpostgresql.conf、に設定unix_socket_directoryしました

unix_socket_directory = '/var/pgsql_socket'

Pgを再起動しました。

それは明らかにソケットの問題を修正したはずですが、私はまだ得ています:

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.5432"?

また、サーバーのステータスを確認したところ、実行中のようですが、「そのようなファイルやディレクトリはありません」と表示されます。

何か案は?

4

4 に答える 4

11

エラーメッセージによると、psql最初に表示されるコマンドは$PATH/tmpハードコードされたデフォルトのUNIXソケットディレクトリです。

実際のディレクトリは実際/var/pgsql_socketにあるため、デフォルトに依存するのではなく、明示的に指定する必要があります。

$ psql -h /var/pgsql_socket [other options]

同じことがcreatedb、、、..のような他のクライアント側コマンドにも当てはまります。dropdbcreateuser

-h毎回指定したくない場合は、PGHOST環境変数に入れることができます。

localhostUnixソケットディレクトリを使用するのではなく、TCP接続を使用してこれを解決する人もいます。

この問題の根本的な原因は、Mac OS XにPostgreSQLをインストールした後、システムにpostgresクライアントセットの2つの異なるインスタンス(libpqライブラリpsqlとその他の関連ユーティリティ)が含まれるようになることです。1つはMacOSにバンドルされており、もう1つはPostgreSQLインストーラーが付属しています。

したがって、さらに別の方法は、PostgreSQLとともにインストールされたものが、システムとともにインストールされたものよりも先に選択されるように変更する$PATHことです(おそらく)。psql/usr/bin/psql

于 2012-08-20T10:00:31.623 に答える
1

Homebrew経由でPostgreSQL9.2をインストールしたときに、これと同じ問題が発生しました。psqlこのビルドに付属しているものは/tmp、オプションなしで呼び出されたときにソケットを探します。

PGHOSTのような新しい環境変数を追加したり、のエイリアスを作成したりする気はありませんでしたpsql。これらのことを行うのは何も悪いことではありませんが、私は自分の環境の雑然としたものに追加する気がしませんでした。

だから、なぜただに設定unix_socket_directorypostgresql.confないの/tmpですか?やった:

unix_socket_directory = '/tmp'      # (change requires restart)
#unix_socket_group = ''             # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation

リロード後、エイリアスや環境変数を追加しなくても、オプションなしで$ psql実行できます。-h

于 2012-12-11T07:38:49.463 に答える
0

私も同じ問題を抱えていました。あなたがやったことをした後、/ usr / local / bin(Homebrewがすべてを置く場所)が/ usr/binの前に来るようにパスを変更する必要もありました。これがデフォルトではなくなった理由はわかりませんが、簡単に変更できます。

sudo vi /etc/paths

次に、ファイルを編集して、上部に/ usr / local/bin行を追加します。

または、特定のユーザーアカウントでこの変更を行うだけの場合は、〜/.bash_profileファイルを編集します。

touch ~/.bash_profile
vi ~/.bash_profile

次の行を追加します。export PATH="/usr/local/bin:$PATH"

次にsource ~/.bash_profile、変更を有効にするために実行します。

于 2012-09-29T06:01:21.467 に答える
0

以下の質問/リンクについては、受け入れられた回答を参照してください。私のために働いたが、変更する設定は、述べられているようにunix_socket_directoryではなくunix_socket_directories(複数形)であることに注意してください。

https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why

于 2013-09-30T09:35:53.923 に答える