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
ruby-on-rails
ruby
ruby-on-rails-4
database-connection
pg
fadelakin
źródło
źródło
Odpowiedzi:
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) .
/usr/local/var/postgres/
lub/usr/local/var/log/
może być w innych systemach/usr/var/postgres/
.server.log
). W ostatnich wierszach zobaczysz:rm postmaster.pid
Uruchom ponownie serwer. Na komputerze Mac za pomocą launchctl (z homebrew) następujące polecenia zrestartują serwer.
LUB w nowszych wersjach Brew
źródło
FATAL: could not open directory "pg_tblspc": No such file or directory
. Ta odpowiedź pomogła mi z tym problemem stackoverflow.com/questions/25970132/…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 restarciebrew install postgres
,ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
,launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
, iARCHFLAGS="-arch x86_64" gem install pg
. Nie wiem, ile innych rozwiązań wypróbowałem przed uruchomieniem tego.brew services restart postgresql
/usr/local/var/log/postgres.log
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
Spowoduje to ponowne uruchomienie PostgreSQL, mam nadzieję, że będzie to dla ciebie pomocne.
źródło
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ń
.pid
plik, uruchamiając to polecenie.Krok 3: Uruchom ponownie serwer
Użytkownicy komputerów Mac
Użytkownicy systemu Linux
Na koniec uruchom ponownie aplikację i możesz zacząć.
źródło
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ń:
które znalazłem tutaj (odpowiedź pjammera na dole)
źródło
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:
Następnie musisz utworzyć użytkownika i bazę danych w postgresql:
Następnie możesz zobaczyć następujące informacje w swoim terminalu
Wpisz tam:
Po wykonaniu tej czynności musisz poprawić
database.yml
. Prawdopodobnie potrzebujesz czegoś takiego:Również jeśli masz problemy z postgresql, dobrze jest sprawdzić pg_hba.conf
źródło
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 :)
źródło
Odinstaluj pg:
Odinstaluj postgres:
Przejrzyj folder postgres, w którym może być mnóstwo starych plików:
Uruchom ponownie (być może niepotrzebne)
Ponownie zainstaluj pg:
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:
I zacznij z nim pg:
Ponownie zainstaluj klejnot:
I bobsyouruncle.
źródło
lunchy stop postgres
a następnielunchy start postgres
sudo apt purge postgresql
każdy innypostgresql
zapach powinien wystarczyć i wszystko to zniszczy.sprawdź plik postgresql.conf (on
ubuntu
znajduje się w /etc/postgresql/XX/main/postgresql.conf ) i poszukaj wiersza:spróbuj zmienić na:
byłoby akceptowanie każdego adresu IP, następnie sprawdź wiersz z napisem:
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!
źródło
Jak opisano w @Magne, błąd
PG::ConnectionBad - could not connect to server: Connection refused
może zostać zgłoszony po aktualizacji wersji głównej / mniejszej (np.9.5 -> 9.6
Lub9 -> 10
) PostgreSQL.Ten błąd wystąpił po uruchomieniu
brew upgrade postgresql
po 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 ...
... a następnie porównanie z bieżącą wersją PG_VERSION
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:
Krok 2. Utwórz nową nieskazitelną bazę danych:
Krok 3. Sprawdź, jakie są stare i nowe wersje binarne:
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 .
-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 aktualizujemyKrok 5. Przenieś stary katalog danych na bok
Krok 6. Przenieś nowo utworzony katalog danych do miejsca, w którym oczekuje go PostgreSQL
Krok 7. Uruchom ponownie 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)
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:
... a jeśli czujesz się naprawdę odważny, możesz usunąć stary katalog danych PostgreSQL za pomocą następującego polecenia
(Ta odpowiedź jest oparta na doskonałym wpisie na blogu https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ z pewnymi dodatkami)
źródło
To mi naprawdę pomogło.
Odniesienie: http://alumni.lewagon.org/questions/60
źródło
Jak zasugerowałem powyżej, właśnie otworzyłem aplikację Postgres na komputerze Mac, kliknąłem Otwórz
Psql
, zamknąłempsql
okno, 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/
źródło
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:
Jeśli nic się nie zmieni:
Jeśli nadal nic się nie zmienia:
Ostatnie polecenie, aby to naprawić, usunęło plik blokady postgres, wykonując z roota:
i wtedy :
Od berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325
Mam nadzieję, że to pomoże :)
Pozdrowienia !!
źródło
Jeśli napotkasz ten problem po zrobieniu
brew upgrade
uaktualnionego postgresu do nowej wersji głównej (np.9.3.0
Do9.4.0
lub wyższej), wykonaj następujące czynności:Problem polega na tym, że w przypadku głównej aktualizacji postgres konieczne jest ponowne utworzenie / migracja bazy danych. I ewentualnie
chown
katalogi 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
źródło
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.pid
plik obecny w tym folderze.źródło
wstaw
host: localhost
dodatabase.yml
pliku i uruchom następującą komendę:źródło
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 server
w terminalu.źródło
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.
źródło
Na pewno pomogła mi odpowiedź Chrisa Slade'a.
Napisałem mały skrypt, aby zabić te pozostałe procesy, jeśli są przydatne:
źródło
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:
a następnie uruchom ponownie serwer i wszystko działało.
źródło
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.
źródło
Prawdopodobnie ponownie uruchomiłeś komputer i zapomniałeś uruchomić aplikację Postgres.
źródło
Miałem ten sam problem. I Sprawdzam ostatni wiersz
PostgreSQL
plików dziennika/var/log/postgresql
. Wystąpił nierozpoznany parametr konfiguracyjny w pliku /etc/postgresql/9.5/main/postgresql.conf . Komentowanie linii błędupostgresql.conf
rozwiązało mój problem.źródło
Mój problem dotyczył pliku application.yml . Moja baza
url
naheroku
to nie za pomocą portu 5342. Sprawdź swójheroku
configvar DATABASE_URL
. Upewnij się, że dokładnie odpowiada to w aplikacji.yml dla odpowiedniej bazy danych.źródło
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
źródło
server.log
. Znalazłem moją odpowiedź tutaj: stackoverflow.com/questions/25970132/...Po prostu uruchamiam to polecenie
sudo service postgresql restart
i wszystko znów działa.źródło
Zatrzymałem serwer szynowy, uruchomiłem
rake db:migrate
i uruchomiłemrails s
.źródło
Wystąpił ten błąd po
brew upgrade
tym, jak postgresql został zaktualizowany. Znalazłem dokładnie, jak rozwiązać mój problem z tego wspaniałego postu. Byłem w stanie przywrócić i uruchomić Postgres, a nawet przeprowadzić migrację we wszystkich moich istniejących bazach danych. https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgradeźródło
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.
Następnie uruchomiłem to polecenie, aby uzyskać dostęp do postgres
A po zachęcie postgres wpisałem „\ du”, aby wyświetlić listę ról
Brakowało roli postgres, więc musiałem ją utworzyć za pomocą tego polecenia
To rozwiązało mój problem i mam nadzieję, że to pomoże komuś innemu.
źródło
Nie musisz usuwać
postmaster.pid
pliku, ponieważ może to powodować uszkodzenie danych.Opcja? Po prostu
kill
proces (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:
Zlokalizuj i otwórz
postmaster.pid
plik (mój jest na Mac Sierra)vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid
Skopiuj PID - jest to liczba w pierwszym wierszu
postmaster.pid
plikukill PID
, np. Jeśli mój PID to 381, zrobię tokill 381
brew services start postgresql
. Lub jeśli używasz postgresapp, po prostu kliknijstart
przyciskźródło
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
źródło