60

I'm having an issue with my install of postgres in my development environment and I need some help diagnosing it. I haven't yet had any luck in tracking down a solution.

  1. I have postgres 9.0.4 installed with homebrew
  2. I am running on OS X 10.6.8 (Snow Leopard)

I can start and stop the server

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

If I try to stop though

$ 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 this is missing

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

But it is definitely running

$ 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

And if I try to access or use it I get this.

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

But global/pg_filenode.map definitely exists in

$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

I have attempted to uninstall and reinstall to no effect. Any ideas on how I can solve this? It has pretty much prevented me from getting anything done today.

Nimantha
  • 6,405
  • 6
  • 28
  • 69
bullfight
  • 1,073
  • 1
  • 9
  • 10

13 Answers13

32

I am not sure what the source of my original problem was with 9.0.3 because I was getting this problem:

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

However as stated above it turns out that the running process was for my previous postgres install of 9.0.3

I believe I had an old version org.postgresql.postgres.plist in ~/Library/LaunchAgents/

I had to:

  1. Remove and re-add the launch agent
  2. Kill the processes for 9.0.3
  3. Initialize the db initdb /usr/local/var/postgres
  4. Restart my computer

and now I have it up and working.

Richard D
  • 327
  • 3
  • 16
bullfight
  • 1,073
  • 1
  • 9
  • 10
26

Encountered this problem using mdillon/postgis:9.6 Docker image. Simple sudo docker restart <container id> solved the problem.

1valdis
  • 1,009
  • 1
  • 15
  • 27
14

That may be a permission issue, check the owner and group of configuration files in /var/lib/pgsql/9.3/data/

chown -R postgres:postgres /var/lib/pgsql/9.3/data/
Nimantha
  • 6,405
  • 6
  • 28
  • 69
user4640867
  • 149
  • 1
  • 2
8

I just encountered this problem. Solved it by setting the owner of the postgres data directory to the unprivileged postgres user.

hd1
  • 33,938
  • 5
  • 80
  • 91
5

ps aux | grep postgres revealed I had another instance of postgres running on a temp data directory from a previous test run. Killing this process fixed the problem.

Owen Pauling
  • 11,349
  • 20
  • 53
  • 64
3

My step-by-step solution in fedora:

  • /bin/systemctl stop postgresql.service (Stop the service)
  • rm -rf /var/lib/pgsql/data (Remove the "data" direcotry)
  • postgresql-setup initdb (Recreate the "data" directory)
  • /bin/systemctl start postgresql.service (Start the service)

It is also useful to check the permissions of the "data" directory:

chown -R postgres:postgres <path_to_data_dir>

(Kudos to @LuizFernandodaSilva & @user4640867)

raratiru
  • 8,748
  • 4
  • 73
  • 113
2

I had an old value of PGDATA confusing things.

Chris
  • 820
  • 7
  • 22
2

This (https://gist.github.com/olivierlacan/e1bf5c34bc9f82e06bc0) solved my problem! I first had to:

  1. Delete Postgres.app from my Applications
  2. Delete /usr/local/var/postgres directory
  3. initdb /usr/local/var/postgres/

Then I was able to start/stop Postgres with these 2 commands:

Start:

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

Stop:

pg_ctl -D /usr/local/var/postgres stop -s -m fast
Raymond Gan
  • 4,612
  • 3
  • 24
  • 19
1

My solution to this problem:
I am running postgresql-9.3

My plist file is in the following directory:/Library/LaunchDaemons/com.edb.launchd.postgresql-9.3.plist

Step 1 will stop postgres
1. $ sudo launchctl stop com.edb.launchd.postgresql-9.3
Start postgres using the following command (can find this location using $ brew info postgres)
2. $ postgres -D /usr/local/var/postgres

RC_02
  • 3,146
  • 1
  • 18
  • 20
1

I agree about all of the above solutions. I was running Postgres on a server, and the problem was that I was using a PORT number that was used by some other OLDER version of Postgres.

I only needed to change the port.

MFARID
  • 700
  • 1
  • 12
  • 18
1

I had the same error psql: FATAL: could not open relation mapping file "global/pg_filenode.map": No such file or directory.

Thanks for note #2 above: 'Kill the processes for 9.0.3'

I previously configured and compiled PostgreSQL. I then decided to reconfigure, gmake, gmake install with different file paths. The newly compiled program wasn't finding 'pg_filenode.map' in the expected filepath. Killing the running postgres process, emptying pgsql/data, and doing initdb again allowed creation of a new database.

Ted Spradley
  • 3,414
  • 3
  • 22
  • 26
0

Make sure to turn off you antivirus. In my case when i turn off the antivirus(kaspersky) it worked fine Ref : https://github.com/PostgresApp/PostgresApp/issues/610

0

just grant permission using the command line:

sudo chown -R $(whoami) /usr/local/*
Wasif Ali
  • 1
  • 2