web-dev-qa-db-ja.com

自作postgresが壊れています

Homebrewを使用してMac(10.10.1/Yosemite)にインストールされたPostgresql 9.4.0をインストールしました。それは動作しません。

〜/ Library/LaunchAgentsに/usr/local/opt/postgresql/homebrew.mxcl.postgresql.plistへのソフトリンクを作成しました。

Postgresを手動でロードしようとすると、「Operation is in progress」というメッセージが表示されます

> launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
/usr/local/Cellar/postgresql/9.4.0/homebrew.mxcl.postgresql.plist: Operation already in progress

ただし、postgresは実行されていないようです。

> ps auxw | grep post
billmcn           670   0.0  0.0  2424272    452 s000  R+   10:12PM   0:00.01 grep post

コマンドラインクライアントに接続できません。

> psql
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"?

私の知る限り、 otherStackoverflow で提案されたこの問題を議論するすべての修正を試しました。具体的には:

  • Postgresとそれに付随するRuby gem。私のマシンにはpostgres 8.0バージョンがありません。
  • Psqlクライアントプログラムが、Homebrewによってインストールされた9.4.0バージョンであり、Macシステムバイナリではないことを確認しました。
  • /usr/local/var/postgres/postmaster.pidが存在しないことを確認しました。
  • マシンをリブートしました。

Homebrew postgresはこのマシンで以前に動作していました。壊れたのはバージョン8からバージョン9へのアップグレードだと思いますが、よくわかりません。

保存する必要のあるデータベースはありません。私はpostgresできれいに始めたいと思っています。今すぐ動作するようにする必要があります。何か案は?


この問題は、/ usr/local/var/postgresディレクトリーに対する許可であったようです。以下は、物事が機能していなかったときの私のvarディレクトリの様子です。

ll /usr/local/var/
drwxr-xr-x  3 billmcn  admin  102 Dec 20 12:44 cache
drwxr--r--  2 root     admin   68 Dec 29 21:37 postgres

(whoami = "billmcn")

/ usr/local/var/postgresを削除し、postgresをアンインストールして再インストールしたところ、次のようになりました。

ll /usr/local/var/
drwxr-xr-x   3 billmcn  admin  102 Dec 20 12:44 cache
drwx------  23 billmcn  admin  782 Dec 30 10:51 postgres

このディレクトリのアクセス権に気を取られたことを覚えていないので、どうやってこの状態になったかはわかりませんが、関係ありません。今は動作します。

60
W.P. McNeill

新しくインストールしたYosemiteにhomebrewを使用してpostgresをインストールするときに同じ問題が発生しました。

まず、私のbrew configは次のようになります。

HOMEBREW_VERSION: 0.9.5
Origin: https://github.com/Homebrew/homebrew
HEAD: 9f6926265f8e4be7cc80dfe9042f2cd3c1e8dc9e
Last commit: 64 minutes ago
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CELLAR: /usr/local/Cellar
CPU: quad-core 64-bit sandybridge
OS X: 10.10.1-x86_64
Xcode: 6.1.1
Clang: 6.0 build 600
X11: N/A
System Ruby: 2.0.0-481
Perl: /usr/bin/Perl
Python: /usr/bin/python
Ruby: ~/.rvm/rubies/Ruby-2.1.1/bin/Ruby

最初に気づいたのは、/usr/local/var/postgresへの書き込み権限がなかったことです。これはSudo chown -R `whoami` /usr/local/var/postgresを発行して簡単に変更され、その後postgresqlを再インストールして

cat /usr/local/var/postgres/server.log

明らかにした:

postgres cannot access the server configuration file "/usr/local/var/postgres/postgresql.conf": No such file or directory

そこで、/usr/local/var/postgresディレクトリを削除し、データベースを初期化するコマンドを発行しました。

initdb -D /usr/local/var/postgres/

これはトリックを行ったようで、postgresは正常に動作しています。

100

同じ問題がありました。ここでの主な問題は、インストールのinitdbステップで、Macのユーザーとしてではなく、ルート所有権でディレクトリが作成されることです。この問題を解決するには:

initdbを実行する前にデータディレクトリを作成し、許可を0700に設定します

rm -rf /usr/local/var/postgres  # in case this is not your first try
mkdir /usr/local/var/postgres
chmod 0700 /usr/local/var/postgres

次にinitdbを実行すると、データディレクトリの権限が尊重されます。

initdb -D /usr/local/var/postgres

にやにや笑いの場合は、ユーザーにちなんで名付けられたテストデータベースを作成します。

createdb `whoami`

テストするためにログインします:

psql
41
James

Homebrewでpostgresqlをインストールしようとした後、私はこれを得ました:

Warning: postgresql-9.5.2 already installed, it's just not linked

だから私は試しました:

brew link postgresql

そして、このエラーが発生しました:

Linking /usr/local/Cellar/postgresql/9.5.2... 
Error: Could not symlink share/man/man3/SPI_connect.3
/usr/local/share/man/man3 is not writable.

それは書き込み許可の問題のようでしたので、私はしました:

Sudo chown -R `whoami` /usr/local/share/man/

それはトリックをしたので、それから私はできました(エラーなしで):

brew link postgresql
13

この問題に対処するHomebrewのgithubのスレッドであることに注意してください: https://github.com/Homebrew/homebrew/issues/3524


同様の問題がありました。ジェームズの答えは私がそれを解決するのを助けました。しかし、jbkが言及している問題に遭遇しました(/ usr/local/var/postgresを削除した後、再作成され続けました)。

問題は、シンボリックリンクを作成した場合:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

プロセスを開始しました:

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

最初にアンロードする必要があります。

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

jamesのコマンドを実行する前に。

rm -rf /usr/local/var/postgres  # in case this is not your first try
mkdir /usr/local/var/postgres
chmod 0700 /usr/local/var/postgres

さらに、私のように、homebrewを管理する管理ユーザーと、開発目的でpgslを使用する一般ユーザーがいる場合、Jamesコマンドをスーパーユーザーとして実行する必要があります。

Sudo -s

そして、postgresディレクトリーの所有権をdevユーザーに付与する必要があります。

chown my-dev-user /usr/local/var/postgres

Devユーザーとして実行される次のコマンドは、ディレクトリを適切に設定する必要があります。

createdb `whoami`

ランニング:

psql -l

このような操作の後、postgreのテーブルとユーザー権限が表示されます。

お役に立てれば。

9
Cedric

誰かが以前のバージョンからアップグレードした場合、忘れないでください:

brew postgresql-upgrade-database

これは、既存のデータベースをpostgresをアップグレードしたバージョンにアップグレードすることで問題を解決します。

1
Lisandro

エラーを修正するために@leo_chaz_maltraitをチェックしてくださいCould not symlink share/man/man3/SPI_connect.3表示される可能性のある別のエラー:

Error: Could not symlink lib/pkgconfig/libecpg.pc

Sudo chown -R `whoami` /usr/local/lib/pkgconfig

brew link postgresql
0
Anthony Awuley

後世のために、私はこの問題を抱えていました。

High Sierraでpostgres 11.2を実行しています。最近、_brew postgresql-upgrade-database_を使用してpostgres 10からアップグレードしました。

エラー_psql: could not connect to server: No such file or directory_が表示され続け、server.logがis another postmaster (PID 5894) running in data directory "/usr/local/var/postgres"?を示しました

コンピューターの再起動、_postmaster.pid_の削除、_brew services restart postgres_の使用など、いくつかの解決策を試しましたが、役に立ちませんでした。私は最終的に解決策につまずいた:

_brew unlink postgresql && brew link postgresql_

これがなぜ機能したのか分かりませんが、ほとんどここに置いて、将来自分で参照できるようにします!固まるまで壁に物を投げてください!

0
Sam