Mountain Lionでソケットファイル「/var/pgsql_socket/.s.PGSQL.5432」が見つからない(OS Xサーバー)


95

OS X Serverを使用して、MacMini ServerをLion ServerからMountain Lionにアップグレードしました。PostgreSQLについて、昨年Lion Serverを最初にインストールしたときと同じ問題が発生しています。

なんらかのPostgreSQLターミナルコマンドを実行しようとすると、長年にわたって多くの人に知られている次の悪名高いエラーメッセージが表示されます。

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

エラーが発生したときに、_postgresのパスワードを変更しようとしました。いくつかのコマンドを試しましたが、同じエラーが発生しました。サーバーを再起動したが運が悪かった。rootとしてログインして/ var / pgsql_socketを確認しましたが、フォルダーは空です。フォルダー/ var / pgsql_socket_altも空です。

これについてオンラインで確認しました。ただし、Stack Overflowを含め、私が読んだほぼすべてのソリューションは、PostgreSQLの削除と再インストールを提案しています。わかりませんが、サーバーアプリのいくつかのオプションでPostgreSQLを使用しているため、これはもっともらしいオプションとは思えません。私はApple Enterprise Support(契約なし)に連絡しましたが、私の問題は$ 695をキャストする開発者によって解決される必要があると言われました。

再構築できないため、現在ダウンしているウェブサイトがあります。現時点では、これを手伝うためにどこに頼るのかわかりません。何かを見つけることができるかどうかをオンラインで探し続けます。ただし、データベースを再構築できるように、誰かが迅速に回答してくれることを願っています。

更新:2012年12月13日15:33 GMT-6

これは、ps auwwx | grep postgの出力です。

_postgres      28123   0.0  0.1  2479696   7724   ??  Ss    3:01PM   0:00.04 /Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D /Library/Server/PostgreSQL For Server Services/Data -c listen_addresses= -c log_connections=on -c log_directory=/Library/Logs/PostgreSQL -c log_filename=PostgreSQL_Server_Services.log -c log_line_prefix=%t  -c log_lock_waits=on -c log_statement=ddl -c logging_collector=on -c unix_socket_directory=/Library/Server/PostgreSQL For Server Services/Socket -c unix_socket_group=_postgres -c unix_socket_permissions=0770
server1        28216   0.0  0.0  2432768    620 s000  R+    3:02PM   0:00.00 grep postg
_postgres      28138   0.0  0.0  2439388    752   ??  Ss    3:01PM   0:00.01 postgres: stats collector process                           
_postgres      28137   0.0  0.0  2479828   1968   ??  Ss    3:01PM   0:00.00 postgres: autovacuum launcher process                           
_postgres      28136   0.0  0.0  2479696    544   ??  Ss    3:01PM   0:00.00 postgres: wal writer process                           
_postgres      28135   0.0  0.0  2479696    732   ??  Ss    3:01PM   0:00.01 postgres: writer process                           
_postgres      28134   0.0  0.0  2479696    592   ??  Ss    3:01PM   0:00.00 postgres: checkpointer process                           
_postgres      28131   0.0  0.0  2439388    368   ??  Ss    3:01PM   0:00.00 postgres: logger process 

更新:2012年12月13日18:10 GMT-6

激しいウェブ検索の後、このビデオが見つかりました。PostgreSQLを動作させ、エラーを取り除くことができました。pgadminとphppgadminを使用して接続できます。完全な欲求不満のため、私はLion Serverに戻るところだった。今、私はする必要はありません。

http://www.youtube.com/watch?v=y1c7WFMMkZ4


22
問題は、Mac OS XにプレインストールされたバージョンのPostgreSQL psqlが、インストールしたバージョンの前にあるという事実に要約PATHされます。彼らはさまざまな場所でUNIXソケットを探します。指定してtcp / ipを使用する-h localhostか、できれば修正してPATH、正しいpsqlものが最初に見つかるようにします。PostgreSQLをバンドルするだけでなく、それを台無しにするというAppleの奇妙な決定が、標準外の場所に物事を置くことが、この問題の根本的な原因です。
Craig Ringer

3
OSXには進行中の問題があり、パッケージャーはunix-domainソケットを通常とは異なる場所に置くことにしました。検索させてください... BRB ... stackoverflow.com/a/8482546/905902
wildplasser

古いPATHを.bashrcにコピーしました。postgreSQLの別のバージョンをインストールしていません。これは、RVMのコードを含む私のPATHステートメントです。誰かがそれを何に変更すればよいか教えてくれれば、それを行います。どのpsqlを実行すると、/ usr / bin / psqlにあります。皆様のご協力、誠にありがとうございました。PATH = "$ PATH:$ HOME / .rvm / bin:/ usr / bin / psql:/ usr / local:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin" rootとしてログインしているときに、ソケットファイルも検索しています。
Pamela Cook-LightBe Corp

1
@CraigRinger を使用homebrewしているosx場合は、正しい答えが得られる可能性があるため、で確認してくださいbrew doctor
Karthik T 2014

回答:


299

エラーを防ぐために.bash_profileに以下を追加することができました:

export PGHOST=localhost

これは次の理由で機能します:

ホスト名を省略すると、psqlはUnixドメインソケットを介してローカルホスト上のサーバーに接続するか、TCP / IPを介してUnixドメインソケットを持たないマシン上のlocalhostに接続します。

お使いのOSはUnixドメインソケットをサポートしていますが、psql必要なPostgreSQLのUnixソケットが存在しないか、予想とは異なる場所にあります。

ホスト名を明示的に指定して、TCP / IPの使用をlocalhost強制psqlします。環境変数を設定することPGHOSTは、そのための1つの方法です。これは、psqlのマニュアルに記載されています


37
Railsアプリでこれを実行している人のために:database.ymlでホストを指定できます。
dwhalen 2013

12
これはどんな魔術ですか?つまり、真剣に。説明してもらえますか?
Sreejith Ramakrishnan

1
私はいつもこの答えに戻ってきます!再び私の命を救った。このスニペットは本当にこのページpostgresapp.com/documentation/cli-tools.htmlに属しています。
サンベッカー

1
理由はわかりませんが、それでうまくいきます。'rails db:create'を使用すると、rails 5でこの問題に遭遇しましたが、すでにhost: localhostdatabase.ymlに設定しています。@dwhalen
Spark.Bao

1
database.ymlPostgresを古いHomebrew管理バージョンにダウングレードした後にこのエラーが発生した場合、これはを変更せずにRails 5.2で機能しました。
SexxLuthor

37

これをコンソールに貼り付けてみてください:

$ mkdir /var/pgsql_socket/ 

$ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

最後に、私はこの答えを得ました。
Abs

良い。なぜこれが機能するのかはわかっていると思いますが、もう少し説明が役に立ちます。このソリューションは、受け入れられた回答よりも優れており、詳細のみが欠落しています。
Glutexo 2018年

23

PostgreSQLのホストアドレスを空白のままにするのではなく、単に127.0.0.1と入力するだけで解決できました。(Djangoの例)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'database_name',
        'USER': 'database_user',
        'PASSWORD': 'pass',
        'HOST': '127.0.0.1',
        'PORT': '',
        }
}

1
私は今、少し馬鹿げていると感じています。この問題を約2日間修正しようとしています。Windowsでは「127.0.0.1」を使用していましたが、コードを本番環境(Debian 7)に移動し、 ''に変更する必要がありました。問題が別の場所にあるのではないかと思わせるようなエラーメッセージが表示されるのは、ちょっと変です。
fang_dejavu 2014

10

お気に入りのエディターで「postgresql.conf」を開きます。変数 'unix_socket_directories'を探します。おそらく次のようになります。

unix_socket_directories = '/private/tmp/'

この行を次のように変更します。

unix_socket_directories = '/var/pgsql_socket/'

複数のディレクトリにあるソケットファイルをコンマで区切る場合は注意してください。


これは、別の場所にソケットを作成しようとするという望ましい効果がありましたが、サーバーは/ varディレクトリにファイルを作成する権限を持っていなかったため、起動しませんでした。結局、元々あったソケットを単に使用するために、より高いレベルで構成ファイルを変更することになりました。この回答で示されているものとほぼ同じです。stackoverflow.com/a/29511357/1535177
Eosis


7

コメントで他の人が述べたように、この問題の本当に簡単な解決策は、データベース構成内でデータベースを「ホスト」として宣言することです。これを読んでいる人がそれをもう少し明確にするために、この回答を追加します。

たとえば、Ruby on Railsアプリでは、/ config / database.ymlを編集します。

development:
  adapter: postgresql
  encoding: unicode
  database: database_name
  pool: 5
  host: localhost

注:ホストを指定するために追加された最後の行。Yosemiteに更新する前は、この方法でホストを指定する必要はありませんでした。

これが誰かを助けることを願っています。

乾杯


.s.PGSQL.5432ファイルが含まれていることがわかったディレクトリにホストを設定する必要がありました。
エオシス

5

データベースのステータスを確認します。

service postgresql status

データベースが実行されていない場合は、dbを起動します。

sudo service postgresql start

上記のエラーで立ち往生し、データベースを起動して解決しました。
Sivakumar RJ 2017

4

postgresql.confファイルを確認できますか?

あなたのpostgresが実行されているポートは何ですか?

ポート5432で実行されていないと思います。そうでない場合は5432に変更してください。

または端末使用時

psql -U  postgres -p YOUR_PORT_NUMBER database_name

1
端末コマンドを実行できません。同じエラーが発生します。postgresql.confファイルがどこにあるかを知る必要があります。以前は、Lion Serverを実行するときに/ var / pgsqlフォルダーを使用していました。それは今なくなっていると思います。ps grepコマンドの出力を投稿しました。PostgreSQLを実行するためにWikiサービスをオンにしました。サーバーアプリサービスをオンにしなくてもsudo serveradminコマンドを使用できると言われましたが、機能しません。現在ルートとしてログインしているので、何でもできるはずです:)ネットワークユーティリティでポートを確認しました。5432は使用されません。
パメラクック-LightBe Corp


2

私はこれを行うことで言葉で言います:

dpkg-reconfigure locales

好みのロケールを選択してください

pg_createcluster 9.5 main --start

(9.5は私のバージョンのpostgresqlです)

/etc/init.d/postgresql start

そしてそれは言葉!

sudo su - postgres
psql



1
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket"/var/pgsql_socket/.s.PGSQL.5432"?

上記のエラーが発生し続け、上記の解決策はどれもうまくいきませんでした。最後に、次の解決策はMac OS Xでの私の問題を解決しました

brewを使用してpostgresをインストールする

brew install postgres

醸造サービスをインストールする

brew tap homebrew/services

postgresをバックグラウンドサービスとして開始するには

brew services start postgresql

postgresを手動で停止するには

brew services stop postgresql

brewサービスを使用してPostgresを再起動することもできます

brew services restart postgresql

1

postgresサーバーが次のコードで実行されていることを確認してください

sudo service postgresql status

postgresサーバーが非アクティブの場合は、次のコマンドを記述します。

sudo service postgresql start

1

コンピュータがフリーズし、自動的に再起動した後、このエラーが発生しました。私の解決策はこのページではなく、同じエラーpsqlを持つ別の非常に高い評価の SO質問で見つかりませんでした:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありません(Mac OS X)。答え:ちょうどこのファイルを削除し/usr/local/var/postgres/postmaster.pid、その後、brew services restart postgresqlトリックがしました。これを行う前にpostgresプロセスを強制終了することに関するリンクされた回答に関する警告に注意してください。そうしないと、データベースが永久に破損する可能性があります。


0

ファイル権限は、Mac OSが所有するPostgres dbで制限されています。これらの権限は、再起動後、またはPostgresの再起動後にリセットされます。例:serveradmin start postgres。

したがって、一時的に権限または所有権をリセットします。

sudo chmod o+rwx /var/pgsql_socket/.s.PGSQL.5432
sudo chown "webUser"  /var/pgsql_socket/.s.PGSQL.5432

権限のリセットは安全ではないため、ソリューション用に所有しているバージョンのデータベースをインストールします。


0

しばらく時間がかかりましたが、提示された提案と追加のWeb検索を実行した結果、ようやくこれを機能させることができました。Mactasiaが作成した次のYouTubeビデオの情報を使用しました。

http://www.youtube.com/watch?v=y1c7WFMMkZ4

これを行ったとき、拡張子が.lockのファイルが表示されました。しかし、PostgreSQLを使用してRailsアプリケーションの作業を再開したときにRailsサーバーを起動しようとすると、依然としてエラーが発生します。今回は、アクセス拒否エラーが発生しました。これは、plistのlisten_addressesを変更する必要があるだけでなく、unit_socket_permissionsを0777に変更する必要があることを思い出したときでもあります。ユーザーレベル。Postgresは現在正常に動作しています。SQLバックアップからデータを再読み込みしています。

wikiをオンにしたときにsudo serveradmin fullstatus postgresを実行したときにPostgreSQLが機能していたと思われましたが、それでもエラーが発生しました。しかたがない。


0

私は新しいクラスターを作成しましたが、それはうまくいきました、(PostgreSQL)9.3.20を使用していました:

sudo pg_createcluster 9.3 main --start

0

まず、インストールされているpostgresを削除します。

sudo apt-get purge postgr*
sudo apt-get autoremove

次に 'synaptic'をインストールします:

sudo apt-get install synaptic
sudo apt-get update

次にPostgresをインストールします

sudo apt-get install postgresql postgresql-contrib

0

RubyOnRailsアプリのlocalhost 場合、カスタムPostgresqlバージョンを使用する場合に追加

# config/database.yml
default: &default
  host: localhost
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.