sql >> Databasteknik >  >> RDS >> PostgreSQL

Fel vid körning av psql-kommandot i /docker-entrypoint-initdb.d/db_init.sh (psql:kunde inte ansluta till servern:Anslutningen nekades)

Det ser ut som att docker-entrypoint.sh#L111">docker-entrypoint.sh#L111"> version kommer du att se att under körningen av skript i /docker-entrypoint-initdb.d PostgreSQL lyssnar bara på UNIX-socket, och startloggen säger:

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

Detta betyder att psql -h localhost kommer inte att ansluta till databasen, eftersom PostgreSQL inte lyssnar på IP-socket. Du måste använda psql utan -h localhost alternativet för att få den att använda UNIX-socket istället för TCP-anslutningar.

Men varför köra psql -h localhost fungerar manuellt?

Om du tittar på docker-entrypoint.sh igen, du kommer att se att när alla init-skript körs, är PostgreSQL stoppad och sedan startade igen i normalt (operativt) läge, där den lyssnar både på UNIX- och 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 startprocessen är klar kan du ansluta till PostgreSQL med TCP-anslutningar och därmed gå in i behållaren och köra psql -h localhost lyckas.




  1. Qt:Windows 10:QMYSQL-drivrutinen har inte laddats

  2. ORA-29913:fel vid exekvering av ODCIEXTTABLEOPEN-utlysningen

  3. SQL Server pivot kontra multipel koppling

  4. Pgadmin laddas inte