開発環境でのpostgresのインストールに問題があり、診断に助けが必要です。私はまだ解決策を見つけることができませんでした。
サーバーを起動および停止できます
$ 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があったと思います
そうしなければならなかった:
initdb /usr/local/var/postgres
そして今、私はそれを立ち上げて働いています。
この問題が発生していたため、私の元の問題の原因が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があったと思います
そうしなければならなかった:
initdb /usr/local/var/postgres
そして今、私はそれを立ち上げて働いています。
これはパーミッションの問題である可能性があります。/var/lib/pgsql/9.3/data/の設定ファイルの所有者とグループを確認してください
chown -R postgres:postgres /var/lib/pgsql/9.3/data/
私のために問題を解決しました
この問題が発生しました。 postgresデータディレクトリの所有者を特権のないpostgresユーザーに設定することで解決しました。
ps aux | grep postgres
は、前回のテスト実行からtempデータディレクトリでpostgresの別のインスタンスが実行されていたことを明らかにしました。このプロセスを終了することで問題が修正されました。
PGDATAの古い値は混乱を招くものでした。
これ( https://Gist.github.com/olivierlacan/e1bf5c34bc9f82e06bc )は私の問題を解決しました!私は最初にしなければなりませんでした:
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
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 )
mdillon/postgis:9.6
Dockerイメージを使用してこの問題が発生しました。シンプルSudo docker restart <container id>
は問題を解決しました。
この問題に対する私の解決策:
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
同じエラーが発生しました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を再度実行すると、新しいデータベースを作成できました。
上記のすべての解決策に同意します。サーバーでPostgresを実行していましたが、問題は、Postgresの他の古いバージョンで使用されていたPORT番号を使用していたことです。
ポートを変更するだけでした。