2013-07-29 9 views
50

Występuje problem z PostgreSQL na Mac OS X 10.8.4. Przypadkowo zrobiłem brew rm postgresql --force podczas gdy serwer Postgres był uruchomiony. Kiedy zainstalowany przy użyciu brew install postgresql i pobiegł pg_ctl -D /usr/local/var/postgres start uzyskać:Serwer PostgreSQL nie zatrzyma się

pg_ctl: another server might be running; trying to start server anyway 
server starting 
FATAL: lock file "postmaster.pid" already exists                  
HINT: Is another postmaster (PID 752) running in data directory "/usr/local/var/postgres"? 

kiedy uruchomić "ps -ef | grep PostgreSQL" pojawia się:

501 752 235 0 12:42PM ??   0:00.01 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log 
501 754 752 0 12:42PM ??   0:00.00 postgres: checkpointer process  
501 755 752 0 12:42PM ??   0:00.34 postgres: writer process  
501 756 752 0 12:42PM ??   0:00.02 postgres: wal writer process  
501 757 752 0 12:42PM ??   0:00.01 postgres: autovacuum launcher process  
501 758 752 0 12:42PM ??   0:00.01 postgres: stats collector process  
501 945 452 0 12:58PM ttys000 0:00.00 grep postgres 

gdy próbuję zatrzymać serwer z pg_ctl stop -D /usr/local/var/postgres -m fast lub pg_ctl -D /usr/local/var/postgres stop -mi I otrzymujemy:

waiting for server to shut down........................................... Failed 
pg_ctl: server does not shut down 

EDIT

which pg_ctl 
/usr/local/bin/pg_ctl 
pg_ctl --version 
pg_ctl (PostgreSQL) 9.2.4 

Streszczenie server.log: https://gist.github.com/anonymous/6106182

+1

Czy 'pg_ctl -D/usr/local/var/postgres stop -m immediate' ma więcej niż dwie pozostałe próby? – bma

+0

Byłoby to tak samo jak uruchamianie 'pg_ctl -D/usr/local/var/postgres stop -mi' i tak, wszystko co otrzymuję to" Serwer nie wyłącza się " –

+0

Zgadłem, że, ale szybkie spojrzenie na' postgres - -help' nie od razu pokazywało flagę "m". – bma

Odpowiedz

6

Okazuje się, że moja brew.plist dla PostgreSQL musiały być rozładowywane i usunięte w ~/Library/LaunchAgents /. Po ponownym uruchomieniu wszystko jest dobrze ... pytanie zamykające.

+2

proszę rozwinąć na tym – SuperUberDuper

88

Miał ten sam numer, pg_ctl: server does not shut down. Ponadto, ps auxwww | grep postgres nie pokazywał żadnego działającego postrumienia, podczas gdy pg_ctl -D /usr/local/var/postgres status pokazał, że działa postgres. Ponowne uruchomienie mojego mac nie pomogło, posunąłem się nawet do zresetowania SMC, ale ten SO Q/A dał mi pojęcie, czego szukać dalej: problemy z warzeniem.

Po tej linii myślenia, znalazłem to pomocne blog post, który zstąpił do poniższych poleceń, które rozwiązały ten problem dla mnie:

$ brew services list 
$ brew services restart postgresql 

nadzieję, że pomoże ktoś.

AKTUALIZACJA - Nieznana komenda: Usługi

Po nieco dochodzenia następujące jednym z komentarzy („Nieznana komenda: usługi”), okazało się, że autorzy Homebrew postanowił usunąć services z repo , ponieważ nikt nie chce utrzymywać tego kodu.

Możesz przeczytać więcej na ten temat here i here (powiązane bilety github).

Po kilku kolejnych kopiach znalazłem repozytorium this, które dodaje services na Macu.

To jak ja 'powrócił' services:

~ » brew tap gapple/services 
~ » brew services 
usage: [sudo] brew services [--help] <command> [<formula>] 

Small wrapper around `launchctl` for supported formulae, commands available: 
    cleanup Get rid of stale services and unused plists 
    list List all services managed by `brew services` 
    restart Gracefully restart selected service 
    start Start selected service 
    stop Stop selected service 

Options, sudo and paths: 

    sudo When run as root, operates on /Library/LaunchDaemons (run at boot!) 
    Run at boot: /Library/LaunchDaemons 
    Run at login: /Users/user/Library/LaunchAgents 

Oto kolejny zaproponował rozwiązanie: https://apple.stackexchange.com/questions/150300/need-help-using-homebrew-services-command. Sam tego nie sprawdzałem, więc nie wiem, czy i jak to działa.

+3

To przestarzaję tak wiele aliasów basha, które zgromadziłem przez lata dla zrobienia dokładnie tego samego. Dobry wygląd! –

+0

error: unknown command: services –

+2

@naturalc zaktualizował moją odpowiedź w odpowiedzi na Twój komentarz. powiedz mi, czy to działa poprawnie. – Neara

12

Miałem podobny problem. Zapomniałem, że kilka dni temu zintegrowałem "lunchy" i używałem jako wrapletu launchctl do inicjowania plist ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist podczas uruchamiania.pg_ctl nie był skuteczny z powodu następującego wiersza kodu <key>KeepAlive<key>:

 <?xml version="1.0" encoding="UTF-8"?> 
    2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
    3 <plist version="1.0"> 
    4 <dict> 
    5 <key>KeepAlive</key> 
    6 <true/> 
    7 <key>Label</key> 
    8 <string>homebrew.mxcl.postgresql</string> 
    9 <key>ProgramArguments</key> 
    10 <array> 
    11  <string>/usr/local/opt/postgresql/bin/postgres</string> 
    12  <string>-D</string> 
    13  <string>/usr/local/var/postgres</string> 
    14  <string>-r</string> 
    15  <string>/usr/local/var/postgres/server.log</string> 
    16 </array> 
    17 <key>RunAtLoad</key> 
    18 <true/> 
    19 <key>WorkingDirectory</key> 
    20 <string>/usr/local</string> 
    21 <key>StandardErrorPath</key> 
    22 <string>/usr/local/var/postgres/server.log</string> 
    23 </dict> 
    24 </plist> 

Próbując zabić proces bezpośrednio nie działa bo musiałem rozładować plist.

launchctl unload homebrew.mxcl.postgresql.plist 
+0

Uwaga: plik .plist może nie mieć dokładnie takiej samej nazwy, w moim przypadku był to 'homebrew.mxcl.postgresql92.plist' .Sprawdź, czy na przykład: – MCP

6

mam okrągły tego błędu za pomocą polecenia

pg_ctl stop -m immediate 

pg_ctl start 

nie muszę rozładować PLIST ten sposób.

+4

Otrzymuję pg_ctl: nie określono katalogu bazy danych i zmienna środowiskowa PGDATA unset – SuperUberDuper

+1

otrzymuje ten sam błąd: nie określono katalogu bazy danych i zmienną środowiskową PGD ATA anulowano – jjj

10

miałem ten sam problem ... usunięciu czynnika launch rozwiązał problem dla mnie:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 
6

$ brew services list

$ brew services stop postgresql

Przerywanie postgresql, ale to może potrwać ==> Pomyślnie zatrzymano postgresql (etykieta: homebrew.mxcl.postgresql)

0

Opierając się na zainstalowanym warzonym systemie PostgreSQL, użyto następującego polecenia do wyłączenia go.

> brew services stop postgresql 

stopping `postgresql`... (might take a while) 
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql) 

Jak wspomniano w innym odpowiedź grepping listę procesów, a następnie zabijając cokolwiek postgres związane robi nie pracy.

ps aux | grep postgres 
kill $PID 
Powiązane problemy