sql >> Database teknologi >  >> RDS >> PostgreSQL

Fejl ved kørsel af psql-kommando i /docker-entrypoint-initdb.d/db_init.sh (psql:kunne ikke oprette forbindelse til serveren:Forbindelse afvist)

Det ser ud som om docker-entrypoint.sh#L111">docker-entrypoint.sh#L111"> version, vil du se, at under udførelsen af ​​scripts i /docker-entrypoint-initdb.d PostgreSQL lytter kun på UNIX-socket, og opstartsloggen siger:

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

Det betyder, at psql -h localhost vil ikke oprette forbindelse til databasen, da PostgreSQL ikke lytter på IP-socket. Du skal bruge psql uden -h localhost mulighed for at få den til at bruge UNIX-socket i stedet for TCP-forbindelser.

Men hvorfor køre psql -h localhost virker manuelt?

Hvis du ser på docker-entrypoint.sh igen, du vil se, at når alle init-scripts er udført, bliver PostgreSQL stoppet og derefter startede igen i normal (operativ) tilstand, hvor den lytter både på UNIX- og IP-sockets:

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"

Så når opstartsprocessen er fuldført, kan du oprette forbindelse til PostgreSQL ved hjælp af TCP-forbindelser, og dermed gå ind i containeren og køre psql -h localhost lykkes.




  1. MySQL RAND() Funktion – Generer et tilfældigt tal i MySQL

  2. Hvordan bruger man session inde på websider?

  3. Hvad er svaghederne ved denne brugergodkendelsesmetode?

  4. Forbinder postgresql med sqlalchemy