1. ホーム
  2. macos

[解決済み] 自作postgresが壊れた

2023-06-05 20:57:24

質問

Mac (10.10.1/Yosemite) に Postgresql 9.4.0 を homebrew でインストールしたのですが、動作しません。それは動作しません。

私は、~/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"?

私の知る限りでは、次のような修正案をすべて試しました。 その他の スタックオーバーフロー のスレッドでこの問題を議論しています。具体的には

  • 私は postgres と付随する Ruby gem をアンインストールして再インストールしました。私のマシンには、postgres 8.0 のバージョンはありません。
  • psql クライアント プログラムが Mac システムのバイナリではなく、Homebrew によってインストールされた 9.4.0 バージョンであることを確認しました。
  • 私は /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

このディレクトリのパーミッションをいじった覚えはないので、どうしてこのような状態になったのかは不明ですが、まあいいや。今は動いています。

どのように解決するのですか?

私は、インストールしたばかりの Yosemite で homebrew を使用して postgres をインストールする際に、同じ問題が発生しました。

まず最初に、私の brew 設定は次のようになります。

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は問題なく動作しています。