I'm upgrading to Postgres 9.2.2 (from 9.1.4). When I try to upgrade the DBs using:

pg_upgrade -b /usr/local/Cellar/postgresql/9.1.4/bin -B /usr/local/Cellar/postgresql/9.2.2/bin -d /usr/local/var/postgres91 -D /usr/local/var/postgres

I get the following error message:

Performing Consistency Checks
Checking current, bin, and data directories                 ok

There seems to be a postmaster servicing the old cluster.
Please shutdown that postmaster and try again.
Failure, exiting

I've trying stopping the server, but cannot get the upgrade command to work. How to I shutdown the old postmaster?


The postmaster.pid should be inside the previous version's usr/local/var folder. Simply renaming this file should solve the problem.

| improve this answer | |
  • I've come across this problem a couple of times as well and this is a good answer. Stopping all instances of postgres before upgrading ought to be pertinent as well – Jerome Aug 8 '14 at 15:32

In OS X Yosemite, after having installed PostgreSQL via Homebrew:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
| improve this answer | |
  • 1
    This does not fix the problem. If pg_ctl -D /usr/local/var/postgres/ stop returns No such process, then you should rm /usr/local/var/postgres/postmaster.pid. – Andrew Jun 27 '16 at 18:14

On most unix systems you'll find a init script in /etc/init.d which you can use to start, restart, reload or stop unix services.


sudo /etc/init.d/postgresql stop

If this is not available you can use pg_ctl stop


su - postgres
bash-3.1$ pg_ctl stop  # normal stop
bash-3.1$ pg_ctl stop -m s # smart stop
bash-3.1$ pg_ctl stop -m f # fast stop
bash-3.1$ pg_ctl stop -m i # immediate stop

More about pg_ctl


EDIT If you still get the error and you are sure the postmaster is no longer running (check with sudo ps aux | grep "postmaster" - should return one line only) you still have the pid file after a unclean shutdown

Remove the pidfile e.g.

> sudo -u postgres mv /var/lib/postgres/data-9.1/postmaster.pid /tmp
| improve this answer | |
  • 1
    When I try pg_ctl stop, I get: pg_ctl: no database directory specified and environment variable PGDATA unset. BTW, no server seems to be running: luciano$ ps auxwww | grep postgresluciano 995 0.0 0.0 2434892 548 s000 R+ 10:42PM 0:00.00 grep postgres. – Luciano Dec 18 '12 at 0:42
  • grep for postmaster – Michel Feldheim Dec 18 '12 at 7:46
  • Updated answer with further info – Michel Feldheim Dec 18 '12 at 13:44
  • No luck: sudo ps aux | grep "postmaster" luciano 3101 0.0 0.0 2434892 548 s002 S+ 9:12PM 0:00.00 grep postmaster – Luciano Dec 18 '12 at 23:23
  • Issue solved. See my answer. – Luciano Dec 19 '12 at 0:07

On Ubuntu, stop the PostgreSQL service before performing the upgrade. This will stop all instances of postgres regardless of the versions installed.

service postgresql stop

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.