PG :: ConnectionBad - nie można połączyć się z serwerem: połączenie odrzucone

270

Za każdym razem, gdy uruchamiam serwer Rails 4.0, otrzymuję to wyjście.

Started GET "/" for 127.0.0.1 at 2013-11-06 23:56:36 -0500

PG::ConnectionBad - could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (fe80::1) and accepting
TCP/IP connections on port 5432?
:
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `connect'
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:542:in `initialize'
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `postgresql_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:440:in `new_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:450:in `checkout_new_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `acquire_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:356:in `block in checkout'
 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `checkout'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block in connection'
 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:264:in `connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:546:in `retrieve_connection'
 activerecord (4.0.0) lib/active_record/connection_handling.rb:79:in `retrieve_connection'
 activerecord (4.0.0) lib/active_record/connection_handling.rb:53:in `connection'
 activerecord (4.0.0) lib/active_record/migration.rb:792:in `current_version'
 activerecord (4.0.0) lib/active_record/migration.rb:800:in `needs_migration?'
 activerecord (4.0.0) lib/active_record/migration.rb:379:in `check_pending!'
 activerecord (4.0.0) lib/active_record/migration.rb:366:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
 activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__1613334440513032208__call__callbacks'
 activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
 actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:56:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
 railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
 railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
 railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
 quiet_assets (1.0.2) lib/quiet_assets.rb:18:in `call_with_quiet_assets'
 actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
 rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
 rack (1.5.2) lib/rack/runtime.rb:17:in `call'
 activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
 rack (1.5.2) lib/rack/lock.rb:17:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
 railties (4.0.0) lib/rails/engine.rb:511:in `call'
 railties (4.0.0) lib/rails/application.rb:97:in `call'
 rack (1.5.2) lib/rack/content_length.rb:14:in `call'
 thin (1.5.1) lib/thin/connection.rb:81:in `block in pre_process'
 thin (1.5.1) lib/thin/connection.rb:79:in `pre_process'
 thin (1.5.1) lib/thin/connection.rb:54:in `process'
 thin (1.5.1) lib/thin/connection.rb:39:in `receive_data'
 eventmachine (1.0.3) lib/eventmachine.rb:187:in `run'
 thin (1.5.1) lib/thin/backends/base.rb:63:in `start'
 thin (1.5.1) lib/thin/server.rb:159:in `start'
 rack (1.5.2) lib/rack/handler/thin.rb:16:in `run'
 rack (1.5.2) lib/rack/server.rb:264:in `start'
 railties (4.0.0) lib/rails/commands/server.rb:84:in `start'
 railties (4.0.0) lib/rails/commands.rb:78:in `block in <top (required)>'
 railties (4.0.0) lib/rails/commands.rb:73:in `<top (required)>'
 bin/rails:4:in `<main>'

Używam Mavericks OS X 10.9, więc nie wiem, czy to jest problem. Próbowałem wszystkiego, co mogłem, ale nic nie działa. Wiele razy odinstalowałem i zainstalowałem zarówno postgres, jak i klejnot pg.

To jest mój plik database.yml

development:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_development
  pool: 5
  username: 
  password: 
  template: template0
  host: localhost
  port: 5432

test: &test
  adapter: postgresql
  encoding: unicode
  database: metals-directory_test
  pool: 5
  username: 
  password: 
  template: template0
  host: localhost
  port: 5432

staging:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_production
  pool: 5
  username:
  password:
  template: template0
  host: localhost

production:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_production
  pool: 5
  username:
  password:
  template: template0
  host: localhost

cucumber:
  <<: *test
fadelakin
źródło
2
spróbuj dodać „host: localhost” w pliku database.yml, otrzymałem to z stackoverflow.com/a/10793186/919641
Surendra Bobba
1
@trajan Zrobiłem to już. Użyłem nawet tego wątku, kiedy zacząłem szukać rozwiązania. Wysłałem mój plik database.yml. Możesz na to spojrzeć. Może to może pomóc.
fadelakin
pokaż swoje pg_hba.conf
Pronix
2
Nie zapomnij włączyć aplikacji postgres, jeśli z niej korzystasz.
Pavan Katepalli
1
Dzięki za przypomnienie, że włączyłem aplikację @PavanKatepalli! Dobra rozmowa;)
złap 22

Odpowiedzi:

637

Może to być tak proste, jak przestarzały plik PID . Może to nie powieść się po cichu, ponieważ komputer nie zakończył całkowicie procesu zamykania, co oznacza, że postgres nie usunął pliku PID (identyfikator procesu).

Plik PID jest używany przez postgres, aby upewnić się, że jednocześnie działa tylko jedna instancja serwera. Więc kiedy zaczyna się od nowa, kończy się niepowodzeniem, ponieważ istnieje już plik PID , który informuje postgres, że uruchomiono inną instancję serwera (nawet jeśli nie działa, po prostu nie udało się zamknąć i usunąć PID) .

  1. Aby to naprawić, usuń / zmień nazwę pliku PID. Znajdź katalog danych Postgres. W systemie MacOS korzystającym z homebrew jest on zainstalowany /usr/local/var/postgres/lub /usr/local/var/log/może być w innych systemach /usr/var/postgres/.
  2. Aby upewnić się, że to jest problem, spójrz na plik dziennika ( server.log). W ostatnich wierszach zobaczysz:

FATAL: plik blokady „postmaster.pid” już istnieje
WSKAZÓWKA: Czy inny postmaster (PID 347) działa w katalogu danych „/ usr / local / var / postgres”?

  1. W takim razie, rm postmaster.pid
  2. Uruchom ponownie serwer. Na komputerze Mac za pomocą launchctl (z homebrew) następujące polecenia zrestartują serwer.

    launchctl unload homebrew.mxcl.postgresql.plist  
    launchctl load -w homebrew.mxcl.postgresql.plist

    LUB w nowszych wersjach Brew

    brew services restart postgresql
Chris Slade
źródło
24
# 2 to świetna sugestia: „Sprawdź server.log”. Mój błąd był rzeczywiście spowodowane przez uaktualnienie do Yosemite, log serwera: FATAL: could not open directory "pg_tblspc": No such file or directory. Ta odpowiedź pomogła mi z tym problemem stackoverflow.com/questions/25970132/…
Paul Kaplan
20
Właśnie to głosowałem, ponieważ dało mi to wystarczająco dużo, aby naprawić problem spalonego stylu ziemi. Odinstalowałem pg ( gem uninstall pg), odinstalowałem postgres ( brew uninstall postgres), a następnie nukowałem folder postgres, który pozostawał z resztą nieaktualnych plików w ( rm -rf /usr/local/var/postgres). Po restarcie brew install postgres, ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents, launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist, i ARCHFLAGS="-arch x86_64" gem install pg. Nie wiem, ile innych rozwiązań wypróbowałem przed uruchomieniem tego.
IAmNaN
2
czy plik postmaster.opts jest taki sam jak plik postmaster.pid?
ARTLoe
31
Dla nowszych użytkowników Brew polecenie nr 4 brzmibrew services restart postgresql
streetlogics
7
Dla mnie (MAC, homebrew) plik dziennika to/usr/local/var/log/postgres.log
DZack
44

Po wielu poszukiwaniach i analizach znalazłem rozwiązanie, jeśli używasz ubuntu, po prostu napisz to polecenie w swoim terminalu i wciśnij Enter

sudo service postgresql restart

Spowoduje to ponowne uruchomienie PostgreSQL, mam nadzieję, że będzie to dla ciebie pomocne.

Jai Kumar Rajput
źródło
3
Dziękuję 1000 razy. Właśnie zaktualizowałem moją wersję ubuntu i ta poprawka została dla mnie naprawiona.
Mauricio Moraes,
Chociaż pytanie to dotyczy OSX Mavericks, ten podział jest przydatny w instalacjach Ubuntu, gdy dzieje się coś dziwnego podczas migracji lub uruchamiania serwera.
Jerome
39

Ten problem występuje, gdy postgres nie zamyka się poprawnie. Oto jak rozwiązałem ten problem w trzech prostych krokach.

Krok 1: Przejdź do katalogu postgres

Użytkownicy komputerów Mac znajdą to w /usr/local/var/postgres, inni mogą na to spojrzeć /usr/var/postgres/.

Krok 2: Usuń .pidplik, uruchamiając to polecenie.

rm postmaster.pid

Krok 3: Uruchom ponownie serwer

Użytkownicy komputerów Mac

brew services restart postgresql

Użytkownicy systemu Linux

sudo service postgresql restart

Na koniec uruchom ponownie aplikację i możesz zacząć.

techdreams
źródło
33

Udało mi się rozwiązać problem, postępując zgodnie z odpowiedzią Chrisa Slade'a, ale aby zrestartować serwer, musiałem użyć następujących poleceń:

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

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

które znalazłem tutaj (odpowiedź pjammera na dole)

Andrea Gherardi
źródło
25

Czy masz zainstalowany postgresql w swoim systemie? Jeśli nie, obejrzyj Zainstaluj postgresql . Po pomyślnej integracji postgresql z systemem możesz wpisać coś takiego w terminalu systemowym:

which psql
#=> /usr/bin/psql

Następnie musisz utworzyć użytkownika i bazę danych w postgresql:

sudo su - postgres
psql

Następnie możesz zobaczyć następujące informacje w swoim terminalu

postgres=#

Wpisz tam:

CREATE USER yourname WITH PASSWORD 'passwordhere';
CREATE DATABASE metals-directory_production  WITH OWNER yourname;
GRANT ALL PRIVILEGES ON DATABASE metals-directory_production TO yourname;

Po wykonaniu tej czynności musisz poprawić database.yml. Prawdopodobnie potrzebujesz czegoś takiego:

development:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_development
  pool: 5
  username: yourname
  password: passwordhere   ### password you have specified within psql
  host: localhost
  port: 5432               ### you can configure it in file postgresql.conf

Również jeśli masz problemy z postgresql, dobrze jest sprawdzić pg_hba.conf

Mihail Davydenkov
źródło
1
Mam go zainstalowaną, ale lokalizacja znajduje się w / usr / local / bin / psql, a kiedy uruchamiam sudo -u postgres, mówi sudo: nieznany użytkownik: postgres
fadelakin
psql powinien działać, jeśli chcesz używać pg w swojej aplikacji. Spróbuj wpisać terminal psql metal-directory_development. Jakieś wyniki? Jeśli nie, to spróbuj ponownie zainstalować postgres, spróbuj na przykład
Mihail Davydenkov
Kiedy uruchamiam psql metal-katalog_rozwinięcie, otrzymuję psql: nie można połączyć się z serwerem: brak takiego pliku lub katalogu Czy serwer działa lokalnie i akceptuje połączenia z gniazdem domeny Unix „/tmp/.s.PGSQL.5432”? Jestem początkującym programistą szyn i nie mam pojęcia, co to znaczy. Próbowałem ponownie instalować postgres wiele razy, ale bez powodzenia.
fadelakin
23

Aby rozwiązać tego typu problemy z PostgreSQL i pracować z PostgreSQL na Mac OSX, jest to prawdopodobnie BEST i najłatwiejszy rozwiązanie, które znalazłem do tej pory:

http://postgresapp.com/

Wystarczy pobrać, zainstalować i być szczęśliwym :)

KM Rakibul Islam
źródło
19
  1. Odinstaluj pg:

    gem uninstall pg
  2. Odinstaluj postgres:

    brew uninstall postgres
  3. Przejrzyj folder postgres, w którym może być mnóstwo starych plików:

    rm -rf /usr/local/var/postgres
  4. Uruchom ponownie (być może niepotrzebne)

  5. Ponownie zainstaluj pg:

    brew install postgres
  6. Mój komentarz w odpowiedzi Chrisa Slade'a zaczyna się ciężko, teraz korzystam z usług piwowarskich, które uprościły mi życie na wiele sposobów:

    brew install services
  7. I zacznij z nim pg:

    brew services start postgresql
  8. Ponownie zainstaluj klejnot:

    gem install pg

I bobsyouruncle.

IAmNaN
źródło
3
Bądź ostrożny z tą metodą ... jest to podejście do spalonej ziemi i najprawdopodobniej zniszczy wszystkie lokalne dbs, które obecnie masz. Zajrzyj na github.com/copiousfreetime/launchy, gdzie możesz być w stanie to zrobić, lunchy stop postgresa następnielunchy start postgres
lacostenycoder 19.09.16
na ubuntu uważam, że sudo apt purge postgresqlkażdy inny postgresqlzapach powinien wystarczyć i wszystko to zniszczy.
Fabrizio Bertoglio
Zrobiłem to i teraz pojawia się następujący błąd: postgresql_adapter.rb: 709: w `Rescue in Connect ': FATAL: baza danych„ project3_development ”nie istnieje (ActiveRecord :: NoDatabaseError). Co powinienem zrobić ? Widzę bazę danych w rubyminie.
Franky Doul
13

sprawdź plik postgresql.conf (on ubuntuznajduje się w /etc/postgresql/XX/main/postgresql.conf ) i poszukaj wiersza:

listen_addresses="localhost"

spróbuj zmienić na:

listen_addresses="*"

byłoby akceptowanie każdego adresu IP, następnie sprawdź wiersz z napisem:

port=5432

i sprawdź, czy jest to ten sam port bazy danych.yml, domyślnie na moim postgresql-9.2 użyj 5433 zamiast 5432 , nie zapomnij zrestartować serwera postgres,

Powodzenia!

Alexis
źródło
To był również mój problem. Podejrzewam, że tak się stało, ponieważ miałem już uruchomiony program 9.3, kiedy próbowałem „uaktualnić” (tj. Zainstalować 9.5). Domyślam się, że starał się być uprzejmy i skonfigurować się tak, aby działał równolegle na innym porcie, zamiast przejmować istniejącą instalację / proces.
Joel Fouse
12

Jak opisano w @Magne, błąd PG::ConnectionBad - could not connect to server: Connection refusedmoże zostać zgłoszony po aktualizacji wersji głównej / mniejszej (np. 9.5 -> 9.6Lub 9 -> 10) PostgreSQL.

Ten błąd wystąpił po uruchomieniu brew upgrade postgresqlpo wydaniu PostgreSQL w wersji 9.6. Problem polega na tym, że główne / drobne aktualizacje wersji wymagają dodatkowych kroków w celu migracji starej daty do nowej wersji.

Jak sprawdzić, czy to jest twój problem

Możesz sprawdzić, czy to jest problem, sprawdzając najnowszą wersję formuły naparu PostgreSQL zainstalowaną z Homebrew ...

$ brew info postgresql

/usr/local/Cellar/postgresql/9.5.4_1 (3,147 files, 35M)
Poured from bottle on 2016-10-14 at 13:33:28
/usr/local/Cellar/postgresql/9.6.1 (3,242 files, 36.4M) *
Poured from bottle on 2017-02-06 at 12:41:00

... a następnie porównanie z bieżącą wersją PG_VERSION

$ cat /usr/local/var/postgres/PG_VERSION
9.5

Jeśli wersja PG_VERSION jest mniejsza niż najnowsza formuła naparu, a różnica stanowi poważną / niewielką zmianę wersji, prawdopodobnie jest to twój problem.

Jak to naprawić (tj. Jak zaktualizować dane)

Poniższe instrukcje dotyczą uaktualnienia z wersji 9.5 do wersji 9.6. Zmień numery wersji odpowiednio do własnego uaktualnienia

Krok 1. Upewnij się, że PostgreSQL jest wyłączony:

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, with Homebrew...
$ brew services stop postgresql

Krok 2. Utwórz nową nieskazitelną bazę danych:

$ initdb /usr/local/var/postgres9.6 -E utf8

Krok 3. Sprawdź, jakie są stare i nowe wersje binarne:

$ ls /usr/local/Cellar/postgresql/
9.5.3   9.5.4   9.6.1

Zauważ, że w tym przykładzie aktualizuję z wersji binarnej 9.5.4 do wersji binarnej 9.6.1

Krok 4. Przeprowadź migrację bieżących danych do nowej bazy danych za pomocąnarzędzia pg_upgrade .

$ pg_upgrade \
  -d /usr/local/var/postgres \
  -D /usr/local/var/postgres9.6 \
  -b /usr/local/Cellar/postgresql/9.5.4/bin/ \
  -B /usr/local/Cellar/postgresql/9.6.1/bin/ \
  -v
  • -d Flaga określa bieżący katalog danych
  • -D Flaga określa nowy katalog danych do utworzenia
  • -b określa stary plik binarny
  • -B określa nowy plik binarny, do którego aktualizujemy

Krok 5. Przenieś stary katalog danych na bok

$ mv /usr/local/var/postgres /usr/local/var/postgres9.5

Krok 6. Przenieś nowo utworzony katalog danych do miejsca, w którym oczekuje go PostgreSQL

$ mv /usr/local/var/postgres9.6 /usr/local/var/postgres

Krok 7. Uruchom ponownie PostgreSQL

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, if you're running a current version of Homebrew
$ brew services start postgresql

Krok 8. Jeśli używasz klejnotu pg do Railsów, powinieneś dokonać ponownej kompilacji poprzez odinstalowanie i ponowne zainstalowanie klejnotu (pomiń ten krok, jeśli nie używasz klejnotu pg)

$ gem uninstall pg
$ gem install pg

Krok 9. (opcjonalnie) Po upewnieniu się, że wszystko działa poprawnie, możesz uruchomić odzyskać trochę miejsca na dysku za pomocą następującego polecenia:

brew cleanup postgresql

... a jeśli czujesz się naprawdę odważny, możesz usunąć stary katalog danych PostgreSQL za pomocą następującego polecenia

rm -rf /usr/local/var/postgres9.5/

(Ta odpowiedź jest oparta na doskonałym wpisie na blogu https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ z pewnymi dodatkami)

Neil Atkinson
źródło
7

Jak zasugerowałem powyżej, właśnie otworzyłem aplikację Postgres na komputerze Mac, kliknąłem Otwórz Psql, zamknąłem psqlokno, zrestartowałem serwer railsowy w moim terminalu, i to znowu działało, nie ma już błędu.

Zaufaj słońowi: http://postgresapp.com/

houstongolden
źródło
6

Ten sam problem mam po aktualizacji mojego Maca na Osx Movaje.

znalazłem to rozwiązanie:

Wypróbuj najpierw poniższy wiersz poleceń w swoim terminalu:

brew services restart postgresql

Jeśli nic się nie zmieni:

ps aux | grep postgres

Jeśli nadal nic się nie zmienia:

ls -ls | grep post

Ostatnie polecenie, aby to naprawić, usunęło plik blokady postgres, wykonując z roota:

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

i wtedy :

brew services restart postgresql

Od berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325

Mam nadzieję, że to pomoże :)

Pozdrowienia !!

Basile
źródło
5

Jeśli napotkasz ten problem po zrobieniu brew upgradeuaktualnionego postgresu do nowej wersji głównej (np. 9.3.0Do 9.4.0lub wyższej), wykonaj następujące czynności:

Poprawka @ dmitrygusev z https://github.com/Homebrew/homebrew/issues/35240

Pomógł następujący oficjalny przewodnik migracji [Postgresql]:

brew switch postgres 9.3.5    # presuming you already installed 9.4.1
pg_dumpall > outputfile
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
mv /usr/local/var/postgres /usr/local/var/postgres.old
brew switch postgres 9.4.1
initdb -D /usr/local/var/postgres
psql -d postgres -f outputfile

To wszystko. Sprawdź, czy import poszedł dobrze, a następnie usuń kopie zapasowe:

rm outputfile
rm -Rf /usr/local/var/postgres.old

Problem polega na tym, że w przypadku głównej aktualizacji postgres konieczne jest ponowne utworzenie / migracja bazy danych. I ewentualnie chownkatalogi lub połączenia ręczneinitdb .

Zobacz także: Jak zaktualizować PostgreSQL z wersji 9.5 do wersji 9.6 bez utraty danych?


Kilka innych wskazówek, które mogą się przydać na wypadek, gdybyś nie korzystał z Homebrew:

Jak ręcznie zatrzymać serwer PG:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log stop

Jak ręcznie uruchomić serwer PG:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

Magne
źródło
4

Znajdź swój plik postgres, który może być wewnątrz /usr/local/var/postgres/lub w środku, /usr/var/postgres/a następnie usuń postmaster.pidplik obecny w tym folderze.

Awais Shafqat
źródło
3

wstaw host: localhostdo database.ymlpliku i uruchom następującą komendę:

rake db:create db:migrate  
Abel
źródło
2

Użytkownicy komputerów Mac z aplikacją Postgres mogą chcieć otworzyć aplikację (przeszukaj wyszukiwanie Postgres lub znajdź ikonę słonia na pasku menu). Może tam być czerwony X z komunikatem: „Stale postmaster.pid file”. Niestety wyszukiwanie punktowe nie pokaże lokalizacji tego pliku. Kliknij „Ustawienia serwera ...”, a następnie w oknie dialogowym, które zostanie otwarte, kliknij przycisk „Pokaż”, aby otworzyć katalog danych. Przejdź do jednego folderu w (dla mnie był to „var-10”) i usuńpostmaster.pid plik.

Wróć do aplikacji Postgres i kliknij przycisk Start. Ten czerwony znak X powinien zmienić się w zielony znacznik wyboru z komunikatem „Uruchomiony”. Teraz powinieneś być w stanie z powodzeniem uruchamiać komendy Rails jak rails serverw terminalu.

Ustawienia serwera aplikacji Postgres - Pokaż katalog danych

chemturion
źródło
To rozwiązało dla mnie. Dziękuję bardzo za rozwiązanie! To był proces!
boyd
2

Właśnie miałem ten problem dziś wieczorem, pracując nad aplikacją szynową, nad którą pracowałem od dłuższego czasu. Mój problem polegał po prostu na tym, że mój serwer postgresql nie był uruchomiony .

Poszedłem na górę ekranu (jestem na komputerze Mac), kliknąłem małą ikonę słonia i kliknąłem „Start”.

Włącza nasz serwer nie był włączony.

Mam nadzieję, że dla kogoś jest to proste rozwiązanie.

solidstatejake
źródło
1

Na pewno pomogła mi odpowiedź Chrisa Slade'a.

Napisałem mały skrypt, aby zabić te pozostałe procesy, jeśli są przydatne:

kill_postgres() {
  if [[ $* -eq "" ]]; then
    echo "Usage: 'kill_postgres <db_name>' to kill remaining instances (Eg. 'kill_postgres my_app_development')"
  else
    gksudo echo "Granted sudo"
    pids="$(ps xa | grep postgres | grep $* | awk '{print $1}' | xargs)"
    if [[ $pids -eq "" ]]; then
      echo "Nothing to kill"
    else
      for pid in "${pids[@]}"
      do
        echo "Killing ${pid}"
        sudo kill $pid
        echo "Killed ${pid}"
      done
      kill_postgres $*
    fi
  fi
}
Augustin Riedinger
źródło
1

Miałem ten sam problem w produkcji (programowanie, wszystko działało), w moim przypadku serwer DB nie znajduje się na tym samym komputerze co aplikacja, więc w końcu działało po prostu migracja pisząc:

bundle exec rake db:migrate RAILS_ENV=production

a następnie uruchom ponownie serwer i wszystko działało.

leah
źródło
1

Wiem, że jest późno, ale może komuś pomóc. Miałem ten sam problem. Okazuje się, że miałbym dwie wersje postgresów 9.1 i 9.5. Odinstalowałem 9.1 i 9.5, ponownie zainstalowałem 9.5 i działało to dla mnie.

Darshan Chauhan
źródło
1

Prawdopodobnie ponownie uruchomiłeś komputer i zapomniałeś uruchomić aplikację Postgres.

The Whiz of Oz
źródło
1

Miałem ten sam problem. I Sprawdzam ostatni wiersz PostgreSQLplików dziennika /var/log/postgresql. Wystąpił nierozpoznany parametr konfiguracyjny w pliku /etc/postgresql/9.5/main/postgresql.conf . Komentowanie linii błędu postgresql.confrozwiązało mój problem.

Hajar Homayouni
źródło
1

Mój problem dotyczył pliku application.yml . Moja baza urlna herokuto nie za pomocą portu 5342. Sprawdź swój herokuconfig var DATABASE_URL. Upewnij się, że dokładnie odpowiada to w aplikacji.yml dla odpowiedniej bazy danych.

NickDK
źródło
1

Miałem ten sam problem, wyjaśnienie to rozwiązało dla mnie: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/

Kluczowym krokiem było przyjrzenie się końcowi mojego /usr/local/var/postgres/server.log , który pozwolił mi zobaczyć, na czym polega prawdziwy problem, polegający na tym, że nie do końca ukończyłem proces aktualizacji PostgreSQL

Ben Wheeler
źródło
Podobna sytuacja tutaj - kluczem dla mnie było także spojrzenie server.log. Znalazłem moją odpowiedź tutaj: stackoverflow.com/questions/25970132/...
Nathan Wallace
1

Po prostu uruchamiam to polecenie sudo service postgresql restart i wszystko znów działa.

kalibbala
źródło
0

Zatrzymałem serwer szynowy, uruchomiłem rake db:migratei uruchomiłem rails s.

thedanotto
źródło
0

Właśnie miałem ten problem i żadne z sugerowanych rozwiązań nie zadziałało. Po wielu googlingach znalazłem rozwiązanie. To działało dla mnie.

Najpierw musiałem uruchomić to polecenie, aby uruchomić serwer i domyślam się, aby ustawić lokalizację pliku konfiguracyjnego.

pg_ctl -D /usr/local/var/postgres start && brew services start postgresql

Następnie uruchomiłem to polecenie, aby uzyskać dostęp do postgres

psql postgres

A po zachęcie postgres wpisałem „\ du”, aby wyświetlić listę ról

postgres=# \du

Brakowało roli postgres, więc musiałem ją utworzyć za pomocą tego polecenia

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

To rozwiązało mój problem i mam nadzieję, że to pomoże komuś innemu.

luis.madrigal
źródło
0

Nie musisz usuwać postmaster.pidpliku, ponieważ może to powodować uszkodzenie danych.

Opcja? Po prostu killproces (nie używajkill -9 , wystarczy zwykłe zabicie).

Następnie ponownie uruchom serwer Postgres i możesz zacząć!

Oto kroki do osiągnięcia tego celu:

  1. Zlokalizuj i otwórz postmaster.pidplik (mój jest na Mac Sierra)

    vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid

  2. Skopiuj PID - jest to liczba w pierwszym wierszu postmaster.pidpliku

  3. Zabij ten proces kill PID, np. Jeśli mój PID to 381, zrobię tokill 381
  4. Zrestartuj Postres - jeśli używasz naparu, zrób to brew services start postgresql. Lub jeśli używasz postgresapp, po prostu kliknij startprzycisk
Ruto Collins
źródło
0

Menedżer pakietów Homebrew zawiera listy startowe uruchamiające się automatycznie. Aby uzyskać więcej informacji, uruchom brew info postgres.

Uruchom ręcznie:

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

Zatrzymaj ręcznie:

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

Uruchom automatycznie:

„Aby uruchomić, uruchom teraz postgresql i uruchom ponownie przy logowaniu:”

brew services start postgresql

użytkownik3402754
źródło