Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FATAL ERROR lock file "postmaster.pid" already exists

I have recently installed PostGIS on my Mac (El Capitan 10.11.4, Postgres is version 9.5.1) using Homebrew, and I am following these instructions - http://morphocode.com/how-to-install-postgis-on-mac-os-x/

When I try to start Postgres using

pg_ctl -D /usr/local/var/postgres start  

I get the following error:

$ FATAL:  lock file "postmaster.pid" already exists HINT:  Is another postmaster (PID 280) running in data directory "/usr/local/var/postgres"? 

So I spent a few hours researching how to address this, but to no avail.

Notably, I tried to kill the PID as recommended in an answer on Superuser - https://superuser.com/questions/553045/fatal-lock-file-postmaster-pid-already-exists- (in the case above, I ran kill 208), but as soon as I tried to start Postgres again, I got the same error, albeit with a different PID number. I saw a few people recommended deleting the postmaster.pid file, but I feel like maybe I should save that as a last resort...

Admittedly part of the reason I'm not sure how to fix this is that I'm not really clear on what the postmaster even is - I'm just starting to learn about all of this.

Hopping into a Postgres database via the psql db_name command works just fine, for what it's worth.

like image 782
skwidbreth Avatar asked Apr 05 '16 20:04

skwidbreth


People also ask

Can I delete postmaster pid?

You should never manually delete postmaster. pid . It is one of the safeguards that are there to prevent you from starting two PostgreSQL servers on the same data directory, which would cause immediate data corruption. When PostgreSQL starts, it checks for the existence of postmaster.

What is postmaster pid file in Postgres?

PostgreSQL puts a file named postmaster. pid in the data directory to store the process id of the PostgreSQL server process. If PostgreSQL crashes, this file can contain an old pid that confuses PostgreSQL. You can fix this issue by deleting the postmaster.

Where is the postmaster pid?

While the postmaster is running, its PID is stored in the file postmaster. pid in the data directory. This is used to prevent multiple postmaster processes running in the same data directory and can also be used for shutting down the postmaster process.

How do I delete a stale postmaster pid file?

If you'd like to see all the files in the var-11 directory you can type ls -a into your terminal, otherwise, once you're in the var-11 directory go ahead and type rm postmaster. pid This will remove the stale file and you will now be able to start your PostgreSQL server.


1 Answers

Posting this in case it helps someone else:

I was having this same problem as the OP after a hard reboot when my laptop crashed. What helped me was running the following command to see what PID was associated with postmaster.pid:

cat /usr/local/var/postgres/postmaster.pid 

The first number that appears will be the PID. Looking in Activity Monitor, I was able to see that Postgres was running, but without a PID number that matched the one shown.

Instead of the steps outlined in the answer referenced on Superuser, I restarted my laptop properly and then opened up Terminal and ran

brew services restart postgresql 

This worked without having to remove postmaster.pid, which I saw a few other posts recommend. Sometimes it's the simple solutions that work.

like image 56
aronmoshe_m Avatar answered Sep 21 '22 16:09

aronmoshe_m