PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Błąd podczas uruchamiania polecenia psql w /docker-entrypoint-initdb.d/db_init.sh (psql:nie można połączyć się z serwerem:połączenie odrzucone)

Wygląda na to, że df63ff17 zepsuł twój skrypt.

Wyjaśnienie:

PostgreSQL może akceptować połączenia nie tylko przez TCP/IP, ale także przez gniazdo UNIX. -h localhost argument mówi psql używać połączeń TCP zamiast gniazda UNIX.

Jeśli zajrzysz do aktualnego docker-entrypoint.sh wersji, zobaczysz, że podczas wykonywania skryptów w /docker-entrypoint-initdb.d PostgreSQL nasłuchuje tylko na gnieździe UNIX, a dziennik uruchamiania mówi:

LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"

Oznacza to, że psql -h localhost nie połączy się z bazą danych, ponieważ PostgreSQL nie nasłuchuje na gnieździe IP. Musisz użyć psql bez -h localhost opcja, aby używać gniazda UNIX zamiast połączeń TCP.

Ale po co uruchamiać psql -h localhost? działa ręcznie?

Jeśli zajrzysz do docker-entrypoint.sh znowu zobaczysz, że po wykonaniu wszystkich skryptów startowych, PostgreSQL jest zatrzymał się a następnie rozpoczęto ponownie w trybie normalnym (operacyjnym), w którym nasłuchuje zarówno na gniazdach UNIX, jak i IP:

LOG:  listening on IPv4 address "0.0.0.0", port 5432
LOG:  listening on IPv6 address "::", port 5432
LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"

Tak więc, po zakończeniu procesu uruchamiania, możesz połączyć się z PostgreSQL za pomocą połączeń TCP, wchodząc do kontenera i uruchamiając psql -h localhost się powiedzie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ProtocolViolation:BŁĄD:komunikat bind dostarcza 0 parametrów, ale przygotowana instrukcja wymaga 1

  2. PL/Python i postgreSQL:Jaki jest najlepszy sposób na zwrócenie tabeli z wieloma kolumnami?

  3. Jak pobrać identyfikator wstawionego wiersza podczas używania upsert z klauzulą ​​WITH w Posgres 9.5?

  4. Jak wykonać kopię zapasową i przywrócić bazę danych PostgreSQL

  5. Zduplikowana kolumna po przełączeniu z typu danych szeregowego na tożsamość w PostgreSQL / pgAdmin4