daydreamer
daydreamer

Reputation: 92169

How to restart PostgreSQL server on MacOS?

I tried the following and it failed

bash-3.2$ pg_ctl restart
pg_ctl: no database directory specified and environment variable PGDATA unset

I am using Macbook Pro and dont remember the directory where my data is stored and so can't set PGDATA either, is there a way to restart Postgres at all without losing data?

Thank you

Upvotes: 18

Views: 25463

Answers (3)

Jeremy Chone
Jeremy Chone

Reputation: 3167

One liner (with default postgresSql 9.6 install)

sudo su postgres -c "/Library/PostgreSQL/9.6/bin/pg_ctl restart -D /Library/PostgreSQL/9.6/data"

Full version

Get the pgdata folder (gave me /Library/PostgreSQL/9.6/data) (thanks @a_horse_with_no_name)

select name, setting from pg_settings where name = 'data_directory';

For me it returns '/Library/PostgreSQL/9.6/data'

Then

sudo su - postgres
./bin/pg_ctl restart -D /Library/PostgreSQL/9.6/data

Note: postgres' user home dir should be "/Library/PostgreSQL/9.6"

Upvotes: 17

pjammer
pjammer

Reputation: 9577

If you used brew you could find the restart(start|stop) instructions by doing a brew info postgresql Some issues that happen stem from the fact I've seen the plist not load, on OS startup, for some reason. I always forgot what to do and this helped.

on my Postgres 9.2 brew recipe it had:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Upvotes: 18

user330315
user330315

Reputation:

As you want to re-start Postgres I assume the server is already running.

Using the superuser account you can query the location of the data directory through SQL:

select name, setting
from pg_settings
where name = 'data_directory'

With that information you can supply the data directory to the pg_ctl command using the -D switch (see the manual for details)

Upvotes: 23

Related Questions