web-dev-qa-db-ja.com

Postgresは「リレーションマッピングファイル「global / pg_filenode.map」を開けませんでした」で失敗しています

開発環境でのpostgresのインストールに問題があり、診断に助けが必要です。私はまだ解決策を見つけることができませんでした。

  1. Homebrewでpostgres 9.0.4をインストールしています
  2. OS X 10.6.8(Snow Leopard)で実行しています

サーバーを起動および停止できます

$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting

でも止めようとしたら

$ pg_ctl -D /usr/local/var/postgres stop -s -m fast
pg_ctl: PID file "/usr/local/var/postgres/postmaster.pid" does not exist
Is server running?

OK

$ ls -l /usr/local/var/postgres/ | grep postmaster
$

しかし、それは間違いなく実行されています

$ ps aux | grep postgres
pschmitz   303   0.9  0.0  2445860   1428   ??  Ss    3:12PM   0:02.46 postgres: autovacuum launcher process       
pschmitz   304   0.9  0.0  2441760    428   ??  Ss    3:12PM   0:02.57 postgres: stats collector process       
pschmitz   302   0.0  0.0  2445728    508   ??  Ss    3:12PM   0:00.56 postgres: wal writer process       
pschmitz   301   0.0  0.0  2445728    560   ??  Ss    3:12PM   0:00.78 postgres: writer process       
pschmitz   227   0.0  0.1  2445728   2432   ??  S     3:11PM   0:00.42 /usr/local/Cellar/postgresql/9.0.3/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log

そして、私がそれにアクセスしたり使用したりしようとすると、これが得られます。

$psql
psql: FATAL:  could not open relation mapping file "global/pg_filenode.map": No such file or directory

しかし、global/pg_filenode.mapは間違いなく存在します

$ls -l /usr/local/var/postgres/

...
-rw-------  1 pschmitz  staff   8192 Sep 16 15:48 pg_control
-rw-------  1 pschmitz  staff    512 Sep 16 15:48 pg_filenode.map
-rw-------  1 pschmitz  staff  12092 Sep 16 15:48 pg_internal.init

アンインストールして再インストールしても何の効果もありません。これを解決する方法についてのアイデアはありますか?それは今日、私が何かを成し遂げることをほとんど妨げました。

解決済みの編集

この問題が発生していたため、元の問題の原因が9.0.3であったかどうかわかりません

psql: FATAL:  could not open relation mapping file "global/pg_filenode.map": No such file or directory

ただし、上記のように、実行中のプロセスは9.0.3の以前のpostgresインストール用でした。

〜/ Library/LaunchAgents /に古いバージョンのorg.postgresql.postgres.plistがあったと思います

そうしなければならなかった:

  1. 起動エージェントを削除して再追加します
  2. 9.0.3のプロセスを強制終了します
  3. Dbを初期化しますinitdb /usr/local/var/postgres
  4. コンピューターを再起動する

そして今、私はそれを立ち上げて働いています。

39
bullfight

この問題が発生していたため、私の元の問題の原因が9.0.3であったかどうかはわかりません。

psql: FATAL:  could not open relation mapping file "global/pg_filenode.map": No such file or directory

ただし、上記のように、実行中のプロセスは9.0.3の以前のpostgresインストール用であることがわかりました

〜/ Library/LaunchAgents /に古いバージョンのorg.postgresql.postgres.plistがあったと思います

そうしなければならなかった:

  1. 起動エージェントを削除して再追加します
  2. 9.0.3のプロセスを強制終了します
  3. データベースを初期化するinitdb /usr/local/var/postgres
  4. コンピューターを再起動します

そして今、私はそれを立ち上げて働いています。

29
bullfight

これはパーミッションの問題である可能性があります。/var/lib/pgsql/9.3/data/の設定ファイルの所有者とグループを確認してください

chown -R postgres:postgres /var/lib/pgsql/9.3/data/

私のために問題を解決しました

7
user4640867

この問題が発生しました。 postgresデータディレクトリの所有者を特権のないpostgresユーザーに設定することで解決しました。

6
hd1

ps aux | grep postgresは、前回のテスト実行からtempデータディレクトリでpostgresの別のインスタンスが実行されていたことを明らかにしました。このプロセスを終了することで問題が修正されました。

4
Owen Pauling

PGD​​ATAの古い値は混乱を招くものでした。

2
Chris

これ( https://Gist.github.com/olivierlacan/e1bf5c34bc9f82e06bc )は私の問題を解決しました!私は最初にしなければなりませんでした:

  1. アプリケーションからPostgres.appを削除します
  2. / usr/local/var/postgresディレクトリを削除します
  3. initdb /usr/local/var/postgres/

その後、次の2つのコマンドでPostgresを起動/停止できました。

開始:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

やめる:

pg_ctl -D /usr/local/var/postgres stop -s -m fast
2
Raymond Gan

Fedoraでの段階的なソリューション:

  • /bin/systemctl stop postgresql.service(サービスを停止します)
  • rm -rf /var/lib/pgsql/data(「データ」ディレクトリを削除します)
  • postgresql-setup initdb(「data」ディレクトリを再作成します)
  • /bin/systemctl start postgresql.service(サービスを開始します)

「データ」ディレクトリの権限を確認することも役立ちます。

chown -R postgres:postgres <path_to_data_dir>

(@LuizFernandodaSilvaへの称賛& @ user4640867

2
raratiru

mdillon/postgis:9.6 Dockerイメージを使用してこの問題が発生しました。シンプルSudo docker restart <container id>は問題を解決しました。

1
1valdis

この問題に対する私の解決策:
postgresql-9.3を実行しています

私のplistファイルは次のディレクトリにあります:/Library/LaunchDaemons/com.edb.launchd.postgresql-9.3.plist

ステップ1はpostgresを停止します
1。 $ Sudo launchctl stop com.edb.launchd.postgresql-9.3
次のコマンドを使用してpostgresを起動します($ brew info postgresを使用してこの場所を見つけることができます)
2。 $ postgres -D/usr/local/var/postgres

1
RC_02

同じエラーが発生しましたpsql: FATAL: could not open relation mapping file "global/pg_filenode.map": No such file or directory

上記の注#2に感謝します:「9.0.3のプロセスを終了します」

以前にPostgreSQLを構成およびコンパイルしました。それから、異なるファイルパスでgmake、gmake installを再構成することにしました。新しくコンパイルされたプログラムは、予想されるファイルパスで「pg_filenode.map」を見つけられませんでした。実行中のpostgresプロセスを強制終了し、pgsql/dataを空にし、initdbを再度実行すると、新しいデータベースを作成できました。

1
Ted Spradley

上記のすべての解決策に同意します。サーバーでPostgresを実行していましたが、問題は、Postgresの他の古いバージョンで使用されていたPORT番号を使用していたことです。

ポートを変更するだけでした。

1
MFARID