web-dev-qa-db-ja.com

OSX Mavericksへのアップグレード後のpostgresqlの修復

OSX Mavericksへの最近のアップグレードは、私のRails app。

データベースからフェッチしようとすると、サーバーは次のエラーを返します。

PG::ConnectionBad (could not connect to server: Connection refused
    Is the server running on Host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on Host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on Host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

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

インターネットで利用できる多くのソリューションを試しました。 pg gemを再インストールして、database.ymlにHost:localhostを設定します。 /usr/local/var/postgres/pg_hba.confファイルには次のように書かれています:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
Host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
Host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     RyanKing                                trust
#Host    replication     RyanKing        127.0.0.1/32            trust
#Host    replication     RyanKing        ::1/128                 trust

どのpsqlが返します:/usr/local/bin/psql


これに関する解決策はありますか?いくつかの解決策は、新しいバージョンのpostgresがMavericksで追加されるため、$ PATHを以前のpostgresインストールに変更する必要があることを示唆しています。それがどこにあるのかを見つけるにはどうすればよいですか? homebrewでインストールされた可能性は十分にありますが、確信はありません。

21
Ryan King

homebrew経由でインストールした場合は、これを試してください(brew info postgresql

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

リロードされます。 Postgress.appのデフォルトではデータベースが見つかりません(PGDATAディレクトリを指す必要があり、バージョンの競合が発生する可能性があります(9.2とpostgress.appの実行が9.3の場合、ダンプ/復元が正常に行われます。

コメントから引き出します。

わかりましたので、9.2.3がインストールされているように見えますが、私はこれをします。

postgres -D /usr/local/var/postgres 

その後、それらをすべてバックアップします。 pg_dumpall > ~/mydatabases.dump

ポストグレスを殺す

brew reinstall postgresql、ただし、これは9.2.3から9.3.1。次に、すべてのデータベースを再インポートしますpsql < mydatabaes.dump。 launchctlスタッフのアンロード/ロードの指示に従うようにしてください。その時点でうまくいくはずです。 postgress.appを使用してデータベースをそのアプリにインポートすることもできますが、とにかくデータベースをバックアップ/ダンプする必要があります。

23
Doon

tl; dr Postgresアプリケーションを起動するだけです!

FWIW、Mavericksをアップグレードした後も、まったく同じ経験をしました:

  • 9.3のインストールと起動(アプリケーションフォルダーにPostgres93として表示)
  • 9.2をゴミ箱に移動する
  • データベースが移行されなかったため、Railsが失敗する

それから私は戻って:

  • 9.3を終了します
  • ゴミ箱から9.2を復元しました
  • 9.2を起動しました

そしてすべてがうまくいきました!

それから

  • 問題は、Mavericksのインストール後にPostgresが実行されていなかったことです。
  • 起動時にPostgresを実行するために、以前に明示的なことを行ったことはありませんでしたが...
  • Mac OSは以前に実行されていたため、再起動後にPostgresを常に再起動していました。
6
Peter Alfvin

同じ問題がありました。アップグレードによってプロセスが強制終了され、postgres pidファイルがそこに残っていることがわかりました。だから、私のように頭がおかしくなって、OSXをアップグレードするために再起動をクリックしないでください。アップグレードの前にすべてを完全にシャットダウンしてください。

6
GregD

最も簡単な解決策は、 http://postgresapp.com を使用することです

Homebrew経由でインストールするには、必ずbrew update homebrewを再び動作させる

5
jewilmeer

前述のように、これを.bash_profileに追加してみてください here

export PGHOST=localhost
4
Daniel Ristic

最近、10.9.4にアップグレードしたときにこの問題が発生しました。

1日の試行錯誤の後、私は問題を修正したJohoによるこの投稿を見つけました。 https://Gist.github.com/joho/373574

インストールバージョンに合わせてバージョンを変更してください。私のように複数のバージョンがインストールされている場合、cd/usr/local/Cellar/postgresqlにアクセスすると、どのバージョンかを確認できます。次に、インストールに合わせてバージョン番号を変更します。

要約すれば:

$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ mv /usr/local/var/postgres /usr/local/var/postgres9.2
$ brew update
$ brew upgrade postgresql
$ initdb /usr/local/var/postgres -E utf8
$ pg_upgrade -b /usr/local/Cellar/postgresql/9.2.1/bin -B /usr/local/Cellar/postgresql/9.3.4/bin -d /usr/local/var/postgres9.2 -D /usr/local/var/postgres
$ cp /usr/local/Cellar/postgresql/9.3.4/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

Rubyを使用している場合:

$ gem pristine pg

これがお役に立てば幸いです!それは私のためにした

2
Brent11

.dmg経由でインストールする場合は、Postgresインストーラー(私の場合はpostgresql-9.1.3-1-osx.dmg)から再インストールできます。再起動も必要になる場合があります。私は昨日これをしました-私の実際のデータベースは削除されず、すべてが今は大丈夫です。

Snow LeopardからMountain Lionにも同様のことが起こりました。

Mountain Lion Postgresが接続できませんでした

1
Neil Billingham

OS X MavericksPostgreSQLを使用してhomebrewをインストールした後、これはうまくいきました:

Sudo ARCHFLAGS="-Arch x86_64" gem install pg

そうでない場合、このコマンドは、OSをOS X YosemiteおよびOS X El Capitanにアップグレードした後に再び発生した場合の問題を修正しました。

Sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/[Version-Number]/bin gem install pg -v [gem version]

また、XcodeXcodecommand line toolsを更新したことを確認してください。

0
Lahiru

Homebrewを使用してアップグレードした場合、問題はおそらくデータベース形式です。 postgresコマンドを直接実行して確認します。

$ postgres
FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.3.4.

私の開発データベースはすべてシードデータであるため、それらを吹き飛ばしただけです。

$ rm -rf /usr/local/var/postgres
$ initdb

もちろん、これはすべてを強制終了するため、rake db:createが成功する前にロールを再作成する必要があります。

$ createuser -s MyApp

ロール名がわからない場合は、rake db:createを実行するだけです。教えてくれます。

0
bronson

Yosemiteからのアップグレード後にこのページを見つけた場合は、問題を解決するために別のアプローチが必要です。基本的に、Yosemiteへのアップグレードはいくつかのファイルを破壊します。問題と解決策を見つけることができます here !.

0
Obromios