2016-04-05 16 views
6

Recentemente ho installato sul mio Mac PostGIS (El Capitan 10.11.4, Postgres è la versione 9.5.1) utilizzando Homebrew, e sto seguendo queste istruzioni - http://morphocode.com/how-to-install-postgis-on-mac-os-x/FATAL ERROR "postmaster.pid" esiste già

Quando provo ad iniziare Postgres usando

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

ottengo il seguente errore:

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

Così ho trascorso un paio d'ore alla ricerca come affrontare questo, ma senza av ail.

In particolare, ho cercato di uccidere il PID come raccomandato in una risposta su Superuser - https://superuser.com/questions/553045/fatal-lock-file-postmaster-pid-already-exists- (nel caso di cui sopra, mi sono imbattuto kill 208), ma non appena ho provato a ricominciare da capo Postgres,

ho avuto la stesso errore, anche se con un diverso numero PID. Ho visto alcune persone consigliare l'eliminazione del file postmaster.pid, ma ho l'impressione che forse dovrei salvarlo come ultima risorsa ...

Devo ammettere che parte del motivo per cui non sono sicuro di come risolvere questo problema è che Non sono molto chiaro su cosa sia il postmaster - sto solo iniziando a conoscere tutto questo.

Saltare in un database Postgres tramite il comando psql db_name funziona perfettamente, per quello che vale.

risposta

3

Postmaster è il processo PostgreSQL principale. Stai provando ad avviare PostgreSQL che è già in esecuzione (e stai dicendo che puoi collegarti ad esso). Salta quel passaggio del tuo processo.

+0

Oh! Grazie. Mi sembra ovvio ora, ma sto solo cercando la mia strada qui. Molto apprezzato. – skwidbreth

7

TL; DR: Poiché è possibile connettersi al database, non è necessario riavviare il server, è già in esecuzione.


pg_ctl viene utilizzato per controllare il server PostgreSQL. Dal momento che il server è già stato avviato, il comando:

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

restituisce un errore, dicendo che c'è un blocco sulla postmaster.pid - il che è vero in quanto v'è già un server utilizzando tale PID.


Ci sono due modi:

  1. il modo più semplice - saltare questo passo, il server sia già in esecuzione!
  2. Esecuzione di un'operazione inutile: arresto del server e riavvio.

Si potrebbe smettere di fare il vostro server:

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

così che non si avrà il blocco sulla postmaster più e si potrebbe utilizzare il comando per avviare di nuovo.

+1

Oh uomo, grazie mille. Apprezzo molto il vostro aiuto. Un giorno diventerò un maestro di PostGIS ... ma fino ad allora ... – skwidbreth

+0

PostGIS non aveva davvero nulla a che fare con il tuo problema :-) È un problema di servizio strettamente Postgres. –

+0

Scavo - mi sto solo assicurando di mettere tutto sul tavolo. – skwidbreth

3

questo distacco in caso aiuta qualcun altro:

ho avuto questo stesso problema come l'OP dopo un riavvio dura quando il mio computer portatile si è schiantato. Quello che mi ha aiutato a correvo il seguente comando per vedere che cosa PID è stato associato con postmaster.pid:

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

Il primo numero che appare sarà il PID. Guardando in Activity Monitor, sono stato in grado di vedere che Postgres era in esecuzione, ma senza un numero PID corrispondente a quello mostrato.

Invece dei passaggi descritti nella risposta a cui fa riferimento Superuser, ho riavviato correttamente il mio computer portatile e ho quindi aperto Terminal e ho eseguito brew services restart postgresql.

Questo ha funzionato senza dover rimuovere postmaster.pid, che ho visto raccomandare qualche altro post. A volte sono le soluzioni semplici che funzionano.