Nie można połączyć się z lokalnym PostgreSQL


124

Udało mi się zepsuć moje lokalne środowisko programistyczne.

Wszystkie moje lokalne aplikacje Railsowe wyświetlają teraz błąd:

PGError
could not connect to server: Permission denied
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

Nie mam pojęcia, co to spowodowało.

Szukając rozwiązania, zaktualizowałem wszystkie dołączone klejnoty, zaktualizowałem klejnoty systemowe, zaktualizowałem MacPorts. Brak przyjemności.

Inni zgłaszali ten problem podczas aktualizacji z OSX Leopard do Lion, z powodu niejasności co do wersji Postgres (tj. Wersji OSX lub wersji MacPorts). Prowadzę Lion'a od kilku miesięcy, więc wydaje się dziwne, że powinno to nastąpić teraz.

Nie chcę zbytnio się bawić bez uprzedniego zrozumienia, na czym polega problem. Jak mogę to metodycznie debugować?

Jak mogę określić, ile wersji PostgreSQL jest w moim systemie, do której z nich uzyskuje się dostęp i gdzie się znajduje? Jak to naprawić, jeśli używany jest niewłaściwy PostgreSQL?

Przepraszam za pytania noobów. Wciąż się uczę, jak to działa! Dzięki za wskazówki.

EDYTOWAĆ

Niektóre aktualizacje oparte na sugestiach i komentarzach poniżej.

Próbowałem uruchomić, pg_lsclustersco zwróciło command not foundbłąd.

Następnie spróbowałem zlokalizować mój plik pg_hba.conf i znalazłem te trzy przykładowe pliki:

/opt/local/share/postgresql84/pg_hba.conf.sample
/opt/local/var/macports/software/postgresql84/8.4.7_0/opt/local/share/postgresql84/pg_hba.conf.sample
/usr/share/postgresql/pg_hba.conf.sample

Więc zakładam, że są zainstalowane 3 wersje PSQL? Macports, OSX default i ???.

Następnie wyszukałem skrypt startowy launchctl, ps -ef | grep postgresktóry zwrócił

0    56     1   0 11:41AM ??         0:00.02 /opt/local/bin/daemondo --label=postgresql84-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper restart ; --pid=none
  500   372     1   0 11:42AM ??         0:00.17 /opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb
  500   766   372   0 11:43AM ??         0:00.37 postgres: writer process                                                                                                                                                                                                                                                                                                                   
  500   767   372   0 11:43AM ??         0:00.24 postgres: wal writer process                                                                                                                                                                                                                                                                                                               
  500   768   372   0 11:43AM ??         0:00.16 postgres: autovacuum launcher process                                                                                                                                                                                                                                                                                                      
  500   769   372   0 11:43AM ??         0:00.08 postgres: stats collector process                                                                                                                                                                                                                                                                                                          
  501  4497  1016   0 12:36PM ttys000    0:00.00 grep postgres

Zamieściłem zawartość postgresql84-server.wrapper pod adresem http://pastebin.com/Gj5TpP62 .

Próbowałem uruchomić, port load postgresql184-serverale otrzymałem błąd Error: Port postgresql184-server not found.

Nadal nie wiem, jak to naprawić i doceniam wszelkie wskazówki „dla głupków”.

Dzięki!

EDYCJA2

Ten problem zaczął się po tym, jak miałem problemy z daemondo. Moje lokalne aplikacje Railsów ulegały awarii z błędem aplikacji typu „daemondo gem nie można znaleźć”. Następnie przeszedłem przez serię aktualizacji pakietów, aktualizacji klejnotów, aktualizacji portów i aktualizacji parzenia, aby spróbować znaleźć problem.

Czy ten błąd może być problemem z daemondo?


Pamiętaj, że gdy Twoja aplikacja łączy się, łączy się przez port TCP zamiast przez gniazdo domeny unix. Musisz więc skonfigurować postgres, aby akceptował połączenia sieciowe, przynajmniej z localhost.
Paul Tomblin,

Dlaczego tak uważasz? Oczywiście sterowniki próbują połączyć się przez gniazdo Unix. Chociaż szukają gniazda w złym miejscu.
Milen A. Radev,


Dokładnie. Wygląda na to, że jest to rzecz Mac. OP może użyć flagi -h, po sprawdzeniu, że postmaster jest uruchomiony.
wildplasser

Opublikuj wyjście pg_lsclustersi swój pg_hba.confplik.
tscho

Odpowiedzi:


66

To naprawdę wygląda na błąd uprawnień do pliku. Gniazda domeny uniksowej są plikami i mają uprawnienia użytkownika, tak jak każde inne. Wygląda na to, że użytkownik OSX próbujący uzyskać dostęp do bazy danych nie ma uprawnień dostępu do pliku gniazda. Aby to potwierdzić, wykonałem kilka testów na Ubuntu i psql, aby spróbować wygenerować ten sam błąd (zamieszczony poniżej).

Musisz sprawdzić uprawnienia do pliku gniazda i jego katalogów /varoraz /var/pgsql_socket. Twoja aplikacja Railsowa (użytkownik OSX) musi mieć uprawnienia do wykonywania (x) w tych katalogach (najlepiej nadaj uprawnienia każdemu), a gniazdo powinno mieć pełne uprawnienia (wrx). Możesz użyć, ls -lAd <file>aby to sprawdzić, a jeśli którykolwiek z nich jest dowiązaniem symbolicznym, musisz sprawdzić plik lub katalog, na który wskazuje łącze.

Możesz zmienić uprawnienia do katalogu dla siebie, ale gniazdo jest konfigurowane przez postgres w postgresql.conf. Można go znaleźć w tym samym katalogu, co pg_hba.conf(Musisz dowiedzieć się, który z nich). Po ustawieniu uprawnień będziesz musiał ponownie uruchomić postgresql.

# postgresql.conf should contain...
unix_socket_directory = '/var/run/postgresql'       # dont worry if yours is different
#unix_socket_group = ''                             # default is fine here
#unix_socket_permissions = 0777                     # check this one and uncomment if necessary.

EDYTOWAĆ:

Dokonałem szybkiego wyszukiwania w Google, do którego możesz zajrzeć, aby sprawdzić, czy jest relavent. Może to spowodować findniepowodzenie każdej próby pliku konfiguracyjnego.

http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html


Komunikaty o błędach:

Nie znaleziono użytkownika w pg_hba.conf

psql: FATAL:  no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off

Nieudane uwierzytelnianie hasła użytkownika:

psql: FATAL:  password authentication failed for user "couling"

Brak pliku gniazda unix:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Gniazdo uniksowe istnieje, ale serwer go nie słucha.

psql: could not connect to server: Connection refused
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Złe uprawnienia do pliku gniazda unix :

psql: could not connect to server: Permission denied
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

1
dzięki za te pomysły @couling. Wydaje się, że to właściwy kierunek. Ale jest coś bardzo dziwnego w mojej konfiguracji. Pamiętaj, że do niedawna działało to doskonale. Przejrzałem trzy katalogi postgres w moim systemie, wszystkie zawierają pliki conf.sample (pg_hba, pg_ident, pg_service itp.), Ale nie zawierają plików .conf. Tak nie powinno być, prawda? Również katalog, który powinien zawierać .PGSQL.5432 jest pusty. Zamiast tego mam plik znajdujący się w /private/tmp/.s.PGSQL.5432.lock. PSzwraca procesy postgres, więc jest uruchomiony. Zmieszany!
Andy Harvey

Dodałem dodatkowy link. O ile wiem, nie możesz mieć postgresql bez pliku postgresql.conf (nawet jeśli zmieniono jego nazwę). Twoim pierwszym zadaniem musi być znalezienie tego.
Philip Couling

1
zajęło to trochę czasu, aby przeszukać moje katalogi i znaleźć odpowiednie pliki, ale to rzeczywiście był problem. Dzięki za bardzo szczegółową odpowiedź. Gdy znalazłem właściwy katalog, musiałem ustawić katalog gniazda, katalog danych, hba_file i ident_file w postgresql.conf. Dziękuję Ci!
Andy Harvey

1
Może niektórym pomóc: użyłem brew do zainstalowania postgres na moim koncie. W moim przypadku okazało się, że folder / var / pgsql_socket / należał do użytkownika _postgres i zmiana właściciela na moje konto (darren) rozwiązała ten problem. Nie wiesz, dlaczego brew nie ustawił poprawnie własności tego folderu w pierwszej kolejności ...?
Darren Jensen,

Dziękuję ci. Nie mogłem się połączyć i ustawienie unix_socket_directory było właściwe.
Ryan Bigg

41

Moje przeczucie jest takie, że jest to (znowu) sprawa Mac / OSX: front-end i back-end przyjmują inną lokalizację dla gniazda domeny unix (które działa jako punkt spotkania ).

Lista kontrolna:

  • Czy postgres działa: ps aux | grep postgres | grep -v greppowinien załatwić sprawę
  • Gdzie znajduje się gniazdo: find / -name .s.PGSQL.5432 -ls(gniazdo znajdowało się w / tmp; możesz zacząć tam szukać)
  • nawet jeśli zlokalizujesz gniazdo (domeny unix), klient może użyć innej lokalizacji. (dzieje się tak, gdy mieszasz dystrybucje lub jeśli masz jakąś dystrybucję zainstalowaną i masz inną (np. ze źródła) instalację gdzie indziej), z klientem i serwerem używającymi różnych adresów rendez-vous .

Jeśli postgres jest uruchomiony, a gniazdo faktycznie istnieje, możesz użyć:

  • psql -h /the/directory/where/the/socket/was/found mydbname

(który próbuje połączyć się z gniazdem domeny unix)

; powinieneś teraz otrzymać znak zachęty psql: spróbuj, \da następnie \qzakończ. Możesz też spróbować:

  • psql -h localhost mydbname.

(który próbuje połączyć się z localhost (127.0.0.1)

Jeśli te próby zakończą się niepowodzeniem z powodu niewystarczającej autoryzacji, możesz zmienić pg_hba.conf (i SIGHUP lub zrestartować). W tym przypadku: sprawdź także dzienniki.

Podobne pytanie: Nie można uruchomić Postgres

Uwaga: Jeśli możesz dostać się do zachęty psql, szybkim rozwiązaniem tego problemu jest zmiana config/database.yml, dodaj:

host: localhost

lub możesz spróbować dodać:

host: /the/directory/where/the/socket/was/found

W moim przypadku, host: /tmp


1
@wildplasser dzięki za odpowiedź. To sprawiło, że zacząłem we właściwym kierunku, a szczegółowa odpowiedź Coulinga dała rozwiązanie.
Andy Harvey

6
Dodanie hosta: localhost do mojej bazy danych.yml rozwiązało mój problem. Dzięki :)
Automatico

1
moje jest / prywatne / ... dziwne. Ja go zainstalowałem, ale ten laptop też miał problemy wcześniej. Dziwne. kluczem był ten database.yml!
pjammer,

4
Dziwne. Dodanie „localhost” do mojego database.yml również zadziałało, ale dlaczego? Nie miałem tego wcześniej i wszystko działało dobrze. Ale myślę, że ostatnio nic nie dodałem i nagle tak już było. > _ <
indeks

1
sztuczką dla mnie była ścieżka do gniazda - była w / run not / var / run - dzięki!
qodeninja

26

Spróbuj odinstalować gem pg ( gem uninstall pg), a następnie ponownie zainstalować - jeśli używasz Bundler, następnie bundle install, else gem install pg. Upewnij się również, że ścieżka wybiera właściwą wersję: Lion ma wersję posgresql (poprzednie wersje nie miały) i może znajdować się w ścieżce przed lokalnie zainstalowaną wersją (np. MacPorts, homebrew).

W moim przypadku: homebrew zainstalował postgresql, zaktualizował postgresql, rails itp., A następnie otrzymałem ten błąd. Odinstalowanie i ponowne zainstalowanie pg gem zrobiło to za mnie.


8
bundle exec gem pristine pg <== też
załatwi sprawę

Nie mam wątpliwości, że błąd OP może być spowodowany wieloma czynnikami, ale to rozwiązanie zadziałało dla mnie.
redhotvengeance

20

Lokalizacja pliku gniazda jest umieszczana w kleju w czasie kompilacji. Dlatego musisz odbudować swój pg gem.

gem pristine pg
# or
bundle exec gem pristine pg

Powinno to rozwiązać ten konkretny problem.


Zacząłem otrzymywać problem opisany w tym pytaniu po aktualizacji Postgres z 9,1x do 9,3x. Ta odpowiedź rozwiązała problem (tak samo jak dodanie „localhost” do mojego database.yml, ale podoba mi się to podejście).
Joshua Flanagan

16

Jeśli otrzymujesz podobny błąd:

psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

To może załatwić sprawę (zrobiło to dla mnie):

initdb /usr/local/var/postgres -E utf8

Podany katalog powinien być inny, jeśli nie używasz OSX / Brew.

Uwaga: nie jest to dokładny komunikat o błędzie widoczny powyżej, ale ten wątek jest pierwszym wynikiem tego komunikatu o błędzie.


6
Zawsze mam ten problem od czasu do czasu, ale po raz pierwszy rozwiązuję go za pomocą TEGO rozwiązania. Musiałem też rm -fr /usr/local/var/postgresprzed starteminitb
Raf

1
Po tym, jak to zrobiłem (zarówno Neala, jak i Rafa), otrzymałem błąd „Fatal” Baza danych nie istnieje. Następnie uruchomiono polecenia „rake db: create: all” i „rake db: migrate” i wreszcie wszystko działało ponownie.
Deborah

Miałem również zrobić rm -rf /usr/local/var/postgrespotem initdb /usr/local/var/postgres -E utf8. Ale upewnij się, że postgres nie jest uruchomiony, gdy to zrobisz, w przeciwnym razie katalog zostanie odtworzony prawie natychmiast.
Josh W Lewis

8

Rozwiązaniem tego błędu było dla mnie usunięcie pliku o nazwie postmaster.pid z katalogu postgres. zobacz moje pytanie / odpowiedź, korzystając z poniższego linku, aby uzyskać instrukcje krok po kroku. mój problem nie był związany z uprawnieniami do plików:

psql: nie można połączyć się z serwerem: nie ma takiego pliku lub katalogu (Mac OS X)

ludzie, którzy odpowiedzieli na to pytanie, zrezygnowali z gry, dzięki za to! Głosowałem za wszystkim, co mogłem


Ponieważ zaakceptowana odpowiedź tutaj wskazuje na problem z uprawnieniami do plików, wydaje się oczywiste, że Twój post i ten nie są powiązane.
Andrew Barber

7

Oto jak rozwiązałem ten komunikat o błędzie, częściowo w oparciu o odpowiedź Wildplassera.

find / -name .s.PGSQL.5432 -ls 2> /dev/null
  => ... /tmp/.s.PGSQL.5432

Więc jest moje gniazdo lub cokolwiek innego, ale klient szuka go na:

/var/run/postgresql/.s.PGSQL.5432

Więc po prostu stwórz symboliczne dowiązanie do /tmp/.s.PGSQL.5432:

sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

Mam nadzieję, że to pomoże każdemu. Wydaje się to niewłaściwe, ale hej, działa!


1
To zadziałało dla mnie: sudo ln -s /tmp/.s.PGSQL.5432 /var/pgsql_socket/.s.PGSQL.5432
ardochhigh

Dzięki :) To pomogło. Ale przed utworzeniem dowiązania symbolicznego nie zapomnij utworzyć sudo mkdir /var/run/postgresqlfolderu (w moim przypadku id nie istniał i nie został utworzony przez instalator dla pg 9.3.X).
kovpack

2
Och, to rozwiązanie okazało się rozwiązaniem „jednorazowym”, które musiałem powtarzać po każdym restarcie. Dla Railsów znalazłem inne rozwiązanie - zmodyfikuj plik konfiguracyjny bazy danych (dodana odpowiedź poniżej).
kovpack

6

Zacząłem to rozumieć po uaktualnieniu do nowego postgresu - nie zdawałem sobie sprawy, że przechowuję pliki danych.

Najpierw próbowałem uruchomić serwer postgres:

postgres -D /usr/local/var/postgres

czyli jak widziałem ten błąd

FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.0, which is not compatible with this version 9.3.5.

Więc znalazłem tę odpowiedź na SO - związaną z błędem niezgodności: /server/342626/how-do-i-upgrade-postgresl-database-incompatibility-error

To właśnie to naprawiło

mv /usr/local/var/postgres /usr/local/var/postgres.old
initdb -D /usr/local/var/postgres

4

Potwierdzam tylko, że miałem podobny problem z PSQL i Django,

Wyglądało na to, że mój serwer psql nie został poprawnie zamknięty, a plik postmaster.pid był nadal obecny (powinien zostać automatycznie usunięty po prawidłowym zamknięciu) w moim folderze postgres.

Usunięto to i wszystko dobrze


2
To właśnie rozwiązało problem. Mój komputer zawiesił się i musiałem wykonać twarde zamknięcie. Kiedy uruchomiłem kopię zapasową, postgres mówił, że psql: could not connect to server: No such file or directory.Usuwanie postmaster.pidz /usr/local/var/postgressprawiło, że wszystko znów działało.
Ryan Epp

1
To też mi się przydarzyło. Mój Mac zrestartował się z powodu paniki jądra i musiałem usunąć postmaster.pid przed powrotem do pracy.
Ben

4

postmaster.pidOtrzymałem ten sam błąd (okazuje się, że był to błąd z . Oto jak uruchomiłem postgres i ponownie go uruchomiłem ( uznanie dla Ricardo Burillo za poprawkę ):

$ rm /usr/local/var/postgres/postmaster.pid 
$ pg_resetxlog -f /usr/local/var/postgres

U mnie to zadziałało, chociaż pg_resetxlogistnieje zwrócony plik „lock file” postmaster.pid.
Elise,

3

Miałem podobny problem podczas próby użycia postgresql z railsami. Zaktualizowanie mojego Gemfile do nowej wersji gem pg rozwiązało ten problem. (działa gem pg w wersji 0.16.0). W Gemfile użyj:

gem 'pg', '0.16.0'

następnie uruchom poniższe, aby zaktualizować klejnot

bundle install --without production
bundle update
bundle install

1
To rozwiązało również problem dla mnie. Byłem na 0.15.1 od przejścia przez Rails 4.0 beta, a teraz używam Ruby 2.0.0. Po aktualizacji do pg 0.16.0 problem został rozwiązany.
bratsche

Rozwiązałem problem na 4.1.0.beta1
Andreas,

3

Czytałem wiele tematów na temat tego błędu i rozwiązaniem dla mnie było po prostu ponowne uruchomienie postgresów za pomocą:

sudo service postgresql restart

O czym tutaj nie wspomniano.


3
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Przez chwilę szukam rozwiązania. Więc ten również rozwiązał problem dla mnie (reinit db):

rm -r /usr/local/var/postgres  
initdb /usr/local/var/postgres -E utf8  
pg_ctl -D /usr/local/var/postgres -l logfile start

Używam OS X 10.11.3 z naparem.


2

Zdarzyło mi się to dzisiaj po rozładowaniu baterii mojego Macbooka. Myślę, że może to być spowodowane nieprawidłowym wyłączeniem. Wszystko, co musisz zrobić w przypadkach takich jak mój, to usunąć postmaster.pid

Przejdź do folderu

cd /usr/local/var/postgres

Sprawdź, czy obecny jest postmaster.pid

ls

Usuń postmaster.pid

rm postmaster.pid

2

W moim przypadku żadne z poprzednich rozwiązań nie było dobre. Zamiast używać gniazda, możesz użyć numeru TCP host+ portw pliku konfiguracyjnym Railsów. Więc w database.ymlpliku po prostu dodaj dwie linie, jak tutaj:

...
adapter: postgresql
encoding: unicode
pool: 5
host: localhost
port: 5432

To rozwiązało mój problem :)

Zanim użyłem tej poprawki:

sudo mkdir /var/run/postgresql
sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

Ale po każdym ponownym uruchomieniu /tmp/.s.PGSQL.5432został usunięty i musiałem powtórzyć te polecenia. Rozwiązanie działa, ale jest okropne, więc lepiej po prostu zmodyfikuj plik konfiguracyjny bazy danych Rails :)


2

Otrzymałem ten błąd podczas konfigurowania Posgtres z Django, używam Back Track i jest dostarczany z zainstalowanym Postgresem. Zakładam, że problemem są ustawienia. Naprawiłem to, usuwając go całkowicie, a następnie ponownie instalując w ten sposób.

sudo apt-get remove postgresql
sudo apt-get purge postgresql

Teraz biegnij:

apt-get --purge remove postgresql\*

aby usunąć wszystko, co PostgreSQL z twojego systemu. Samo wyczyszczenie pakietu postgres nie wystarczy, ponieważ jest to po prostu pusty meta-pakiet.

Po usunięciu wszystkich pakietów PostgreSQL uruchom:

rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres

Teraz powinieneś umieć:

apt-get install postgresql

1

MacOSX tutaj. Miałem ten sam problem po uaktualnieniu mojej instalacji postresql z wersji sprzed 9.1 do 9.1.2 przy użyciu homebrew. (Nawiasem mówiąc, pamiętaj, aby zrzucić bazy danych przed aktualizacją za pomocą pg_dump, bazy danych sprzed wersji 9.1 są niekompatybilne.) Ten sam problem, te same komunikaty o błędach.

Odinstalowanie pg gem załatwiło mi sprawę. Właściwie musiałem trochę potańczyć, żeby odkryć problem. Najpierw wykonałem globalną deinstalację klejnotów, usuwając wszystkie stare klejnoty (było ich kilka). Następnie usunąłem pg z mojego pliku Gemfile, ponownie zawiązałem, przywróciłem odniesienie pg i ponownie się zwróciłem.

Potem działało jak urok.


1

Witaj świecie :)
Najlepszym, ale dziwnym dla mnie sposobem było robienie kolejnych rzeczy.

1) Pobierz postgres93.app lub inną wersję. Dodaj tę aplikację do folderu / Applications /.

2) Dodaj wiersz (polecenie) do pliku .bash_profile(który znajduje się w moim katalogu domowym):

export PATH = / Applications / Postgres93.app / Contents / MacOS / bin /: $ PATH
To jest ŚCIEŻKA do psqlz Postgres93.app. Wiersz (polecenie) jest uruchamiany za każdym razem, gdy uruchamiana jest konsola.

3) Uruchom Postgres93.appz /Applications/folderu. Uruchamia lokalny serwer (port to „5432”, a host to „localhost”).

4) Po tych wszystkich manipulacjach ucieszyłem się, mogąc uruchomić $ createuser -SRDP user_namei innych poleceń i zobaczyć, że zadziałało! Postgres93.appmożna uruchomić przy każdym uruchomieniu systemu.

5) Również jeśli chcesz zobaczyć swoje bazy danych graficznie, powinieneś zainstalować PG Commander.app. To dobry sposób, aby zobaczyć swoją bazę danych postgres jako ładne tabele danych

Oczywiście jest to pomocne tylko w przypadku serwera lokalnego. Będzie mi miło, jeśli ta instrukcja pomoże innym, którzy stanęli przed tym problemem.


0

Miałem ten problem nękający mnie i po dalszych badaniach (uruchomionych rake db:setup) zauważyłem, że rails próbowały połączyć się z wcześniej używaną instancją postgres - taką, która była przechowywana w zmiennych env jako DATABASE_URL.

Poprawka: unset DATABASE_URL

źródło: https://stackoverflow.com/a/17420624/2577622


0

Wypróbowałem większość rozwiązań tego problemu, ale żadne nie zadziałało.

Uruchomiłem, lsof -P | grep ':5432' | awk '{print $2}'który pokazał PID uruchomionego procesu. Jednak nie mogłem tego zabić kill -9 <pid>.

Kiedy uruchomiłem, pkill postgresqlproces w końcu się zatrzymał. Mam nadzieję że to pomoże.


0
gem uninstall pg

W systemie OS X z Homebrew:

gem install pg -- --with-pg-config=/usr/local/bin/pg_config
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.