Zainstalowałem Postgresql, a następnie uruchomiłem kilka aplikacji railsowych na moim lokalnym Mac OSX Mountain Lion i utworzyłem bazy danych itp. Dzisiaj po chwili, gdy uruchomiłem pgAdminIII i próbowałem uruchomić serwer bazy danych, otrzymałem ten błąd:
Szybkie Google pokazało ten post. Więcej przeglądania wskazywało na fakt, że może znajdować się jakiś plik postmaster.pid, który może być główną przyczyną tego problemu. Jeśli usunę, wszystko będzie dobrze.
Jednak zanim usuwam rzeczy z mojego komputera, chciałem się upewnić, że debuguję to w systematyczny sposób, który nie spowoduje więcej problemów.
Gdzieś przeczytałem, że przed usunięciem tego pliku muszę uruchomić to polecenie:
ps auxw | grep post
Jeśli nie otrzymam żadnych wyników, można usunąć plik. Inaczej nie. Cóż, mam taki wynik tego polecenia:
AM 476 0.0 0.0 2423356 184 s000 R+ 9:28pm 0:00.00 grep post
Więc teraz, oczywiście, jestem całkowicie zdezorientowany.
Więc co powinienem zrobić?
Oto część mojego dziennika błędów serwera postgres:
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 171) running in data directory "/usr/local/var/postgres"?
Postgresql nadal nie działa, nadal pojawia się ten sam błąd i nic się nie zmieniło. Jestem zbyt tchórzliwy, żeby usuwać rzeczy bez sprawdzania SO.
Czy niektórzy z was, eksperci, mogą poprowadzić nooba.
Dzięki
postmaster.pid
. Serwer usuwa go podczas uruchamiania, jeśli jest nieprawidłowy (nieaktualny) i jest ważny dla ochrony danych. Proszę wyjaśnić, w jaki sposób zainstalowałeś PostgreSQL na swoim komputerze, aby rozpocząć - za pomocą instalatora EnterpriseDB, homebrew, Postgres.app, co? Wspomnij także o wersji PostgreSQL. Wreszcie, jeśli jawnie dodasz "localhost" do opcji połączenia w Pgadmin-III, czy to zadziała? Jeśli tak, gryzie cię naprawdę zła decyzja dotycząca pakowania, którą Apple podjął jakiś czas temu ...postmaster.pid
wtedy można usunąć go po sprawdzeniu, że nie istnieją żadnepostgres
procesy uruchomione, to jest po prostu niezbędna , aby mieć pewność, że w rzeczywistości są żadne procesy PostgreSQL.postmaster.pid
Jednak niepowodzenie serwera w usuwaniu nieaktualnych plików wydaje mi się błędem.Odpowiedzi:
Miałem dziś ten sam problem na Macu Sierra. W Mac Sierra możesz znaleźć w
postmaster.pid
środku/Users/<user_name>/Library/Application Support/Postgres/var-9.6
. Usuń,postmaster.pid
a problem zostanie rozwiązany.źródło
postmaster.pid
w tej lokalizacji, a problem został rozwiązany. Dzięki!postmaster.pid
plik, ponieważ używam Postgres.app/Users/<user>/Library/Application\ Support/Postgres/var-10/postmaster.pid
cat postmaster.pid
w katalogu, aby zajrzeć i stwierdzić, że nie widzisz PID działającego w czymś takim jak monitor aktywności. Interfejs użytkownika Postgres ostrzeże Cię o tym, ale pomyślałem, że powinienem umieścić to tutaj, zanim ludzie będą chcieli nie chcieć i jak sprawdzić siebie. Powinno też wystarczyć poszukaniepostgres
w monitorze aktywności i zabicie wszystkiego, co jest z tym związane, lub po prostu zrestartuj system, a następnie usuń plik. Niezrobienie tego może spowodować uszkodzenie bazy danych 🔥Może się tak zdarzyć, jeśli baza danych nie została poprawnie zamknięta. Aby to naprawić, po prostu usuń
postmaster.pid
plik. Lokalizacja różni się w zależności od systemu operacyjnego:System operacyjny Mac:
lub używając Postgres.app:
Linux:
źródło
postmaster.pid
i uruchomieniupostgres -D /usr/local/var/postgres
zwraca się do mnie informacja o przyczynie błędu: „system bazy danych nie został poprawnie zamknięty; trwa automatyczne odzyskiwanie”Mam już działającą bazę danych.
Oto kroki, które podjąłem:
cd /
ls -la
MackintoshHD/usr/local/var/postgres
ls -la
cp postmaster.pid ~/Desktop
które skopiowało plik na mój pulpit, lubię to zrobić, jeśli usuwam pliki. Jeśli coś pójdzie źle, mogę to odłożyćrm -r postmaster.pid
Dzięki @Craig Ringer za pomoc
źródło
Używam Postgres.app i poniższe działały dla mnie:
Wprowadziłem polecenia do mojego terminala poniżej, lokalizując wcześniej folder Postgres i nie używając „justin”.
$declare -x PGDATA="/Users/justin/Library/Application Support/Postgres/var-9.4" $pg_ctl restart -m immediate
Jak wyjaśnia Justin w swoim poście, wynik po tym był następujący:
Po ponownym wpisaniu polecenia:
Zadziałało i otrzymałem wiadomość:
Źródło
źródło