PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Kesalahan saat menjalankan perintah psql di /docker-entrypoint-initdb.d/db_init.sh (psql:tidak dapat terhubung ke server:Koneksi ditolak)

Sepertinya komit ini 9"> telah merusak skrip Anda.

Penjelasan:

PostgreSQL dapat menerima koneksi tidak hanya melalui TCP/IP, tetapi juga melalui soket UNIX. -h localhost argumen memberitahu psql untuk menggunakan koneksi TCP daripada soket UNIX.

Jika Anda melihat docker-entrypoint.sh saat ini versi, Anda akan melihat, bahwa selama eksekusi skrip di /docker-entrypoint-initdb.d PostgreSQL hanya mendengarkan pada soket UNIX, dan log startup mengatakan:

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

Artinya psql -h localhost tidak akan terhubung ke database, karena PostgreSQL tidak mendengarkan pada soket IP. Anda harus menggunakan psql tanpa -h localhost opsi untuk membuatnya menggunakan soket UNIX alih-alih koneksi TCP.

Tapi mengapa menjalankan psql -h localhost bekerja secara manual?

Jika Anda melihat ke docker-entrypoint.sh lagi, Anda akan melihat bahwa ketika semua skrip init dijalankan, PostgreSQL sedang berhenti lalu dimulai lagi dalam mode normal (operasional), di mana ia mendengarkan pada soket UNIX dan 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"

Jadi, ketika proses startup selesai, Anda dapat terhubung ke PostgreSQL menggunakan koneksi TCP, dengan demikian, masuk ke dalam wadah dan menjalankan psql -h localhost berhasil.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lebih Banyak Kueri PostgreSQL Favorit Saya - dan Mengapa Mereka Juga Penting

  2. EXECUTE...USING pernyataan di PL/pgSQL tidak bekerja dengan tipe record?

  3. PHP:Driver PGSQL dan AutoCommit?

  4. postgres:dapatkan n kemunculan nilai teratas dalam setiap grup

  5. Upser dengan transaksi