Saya menginstal tumpukan Bitnami Django yang termasuk PostgreSQL 8.4.
Ketika saya menjalankan psql -U postgres
saya mendapatkan kesalahan berikut:
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"?
PG sudah pasti berjalan dan pg_hba.conf
file terlihat seperti ini:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Apa yang menyebabkannya?
"Bukti" yang dijalankan pg:
root@assaf-desktop:/home/assaf# ps axf | grep postgres
14338 ? S 0:00 /opt/djangostack-1.3-0/postgresql/bin/postgres -D /opt/djangostack-1.3-0/postgresql/data -p 5432
14347 ? Ss 0:00 \_ postgres: writer process
14348 ? Ss 0:00 \_ postgres: wal writer process
14349 ? Ss 0:00 \_ postgres: autovacuum launcher process
14350 ? Ss 0:00 \_ postgres: stats collector process
15139 pts/1 S+ 0:00 \_ grep --color=auto postgres
root@assaf-desktop:/home/assaf# netstat -nltp | grep 5432
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 14338/postgres
tcp6 0 0 ::1:5432 :::* LISTEN 14338/postgres
root@assaf-desktop:/home/assaf#
postgresql
Assaf Lavie
sumber
sumber
Jawaban:
Masalah ini berasal dari menginstal
postgres
paket tanpa nomor versi. Meskipunpostgres
akan diinstal dan ini akan menjadi versi yang benar, skrip untuk mengatur cluster tidak akan berjalan dengan benar; ini masalah pengemasan.Jika Anda merasa nyaman dengan
postgres
skrip yang dapat Anda jalankan untuk membuat kluster ini dan mulaipostgres
berjalan. Namun, ada cara yang lebih mudah.Pertama-tama bersihkan instalasi postgres lama. Masalahnya saat ini terletak pada 9.1 jadi saya akan menganggap itu yang telah Anda instal
Sekarang cukup instal ulang
Catat nama paket dengan nomor versi. HTH.
sumber
Pesan kesalahan mengacu pada soket Unix-domain, jadi Anda perlu mengubah
netstat
permintaan Anda untuk tidak mengecualikannya. Jadi cobalah tanpa opsi-t
:Saya kira server benar-benar mendengarkan pada soket
/tmp/.s.PGSQL.5432
daripada/var/run/postgresql/.s.PGSQL.5432
klien Anda mencoba untuk terhubung. Ini adalah masalah yang khas ketika menggunakan paket PostgreSQL yang dikompilasi dengan tangan atau pihak ketiga pada Debian atau Ubuntu, karena sumber default untuk direktori socket domain-Unix adalah/tmp
tetapi kemasan Debian mengubahnya/var/run/postgresql
.Solusi yang mungkin:
/opt/djangostack-1.3-0/postgresql/bin/psql
). Mungkin uninstall paket yang disediakan Ubuntu sama sekali (mungkin sulit karena dependensi terbalik lainnya).-H localhost
untuk terhubung melalui TCP / IP sebagai gantinya.-h /tmp
atauPGHOST
pengaturan yang setara untuk menunjuk ke direktori yang benar.sumber
Ini bekerja untuk saya:
Edit: postgresql.conf
Aktifkan atau tambahkan:
Mulai ulang mesin basis data:
Anda juga dapat memeriksa file
pg_hba.conf
Dan tambahkan jaringan atau alamat host Anda:
sumber
Anda dapat menggunakan
psql -U postgres -h localhost
untuk memaksa koneksi terjadi melalui TCP bukan soket domain UNIX;netstat
output Anda menunjukkan bahwa server PostgreSQL mendengarkan pada port localhost 5432.Anda dapat mengetahui soket UNIX lokal mana yang digunakan oleh server PostgrSQL dengan menggunakan invokasi yang berbeda dari netstat :
Bagaimanapun, antarmuka tempat server PostgreSQL mendengarkan untuk dikonfigurasikan
postgresql.conf
.sumber
Cukup buat softlink seperti ini:
sumber
Saya membuatnya bekerja dengan melakukan ini:
Pilih lokasi yang Anda sukai lalu jalankan
(9.5 adalah versi postgresql saya)
dan kemudian itu berhasil!
sumber
service postgresql restart
tetapi ia mengatakan saya tidak memiliki cluster postgresql. Kemudian saya menemukan cara ini untuk membantu saya :)dpkg-reconfigure locales
sangat penting.Saya harus mengkompilasi PostgreSQL 8.1 pada Debian Squeeze karena saya menggunakan Project Open, yang didasarkan pada OpenACS dan tidak akan berjalan pada versi PostgreSQL yang lebih baru.
Konfigurasi default kompilasi menempatkan
unix_socket
di/tmp
, tapi Proyek Terbuka, yang bergantung pada PostgreSQL, tidak akan bekerja karena terlihat untukunix_socket
di/var/run/postgresql
.Ada pengaturan
postgresql.conf
untuk mengatur lokasi soket. Masalah saya adalah apakah saya dapat mengatur/tmp
danpsql
bekerja, tetapi tidak membuka proyek, atau saya dapat mengaturnya/var/run/postgresql
danpsql
tidak akan bekerja tetapi proyek terbuka melakukannya.Satu resolusi untuk masalah ini adalah untuk mengatur soket untuk
/var/run/postgresql
dan kemudian berjalanpsql
, berdasarkan saran Peter, sebagai:Ini berjalan secara lokal menggunakan izin lokal. Satu-satunya kelemahan adalah lebih mengetik daripada hanya "psql".
Saran lain yang dibuat seseorang adalah membuat tautan simbolis antara kedua lokasi. Ini juga berhasil, tetapi tautannya menghilang saat reboot. Mungkin lebih mudah menggunakan argumen -h, namun, saya membuat tautan simbolik dari dalam skrip PostgreSQL di
/etc/init.d
. Saya menempatkan perintah tautan simbolis buat di bagian "mulai". Tentu saja, ketika saya mengeluarkan perintah berhenti dan mulai atau mulai ulang, itu akan mencoba untuk membuat ulang tautan simbolik yang ada, tetapi selain pesan peringatan, mungkin tidak ada salahnya.Dalam kasus saya, alih-alih:
saya sudah
dan telah secara eksplisit mengatur unix_socket ke
/var/run/postgresql/.s.PGSQL.5432
dalampostgresql.conf
.sumber
Larutan:
Melakukan hal ini
dan ini. ( 9.3 adalah versi PostgreSQL saya saat ini. Tulis versi Anda!)
sumber
Jika layanan Postgres Anda aktif dan berjalan tanpa kesalahan atau tidak ada kesalahan dalam memulai layanan Postgres dan Anda masih mendapatkan kesalahan yang disebutkan, ikuti langkah-langkah ini
Langkah1: Menjalankan
pg_lsclusters
akan mencantumkan semua cluster postgres yang berjalan di perangkat Andamisalnya:
kemungkinan besar statusnya akan turun di kasing Anda dan layanan postgres
Langkah 2: Mulai ulang pg_ctlcluster
Langkah 3: Langkah 2 gagal dan melempar kesalahan
Jika proses ini tidak berhasil maka akan terjadi kesalahan. Anda dapat melihat kesalahan logon
/var/log/postgresql/postgresql-9.6-main.log
Kesalahan saya adalah:
Langkah 4: periksa kepemilikan postgres
Pastikan itu
postgres
adalah pemilik/var/lib/postgresql/version_no/main
Jika tidak, jalankan
Langkah 5: Periksa pengguna postgres milik kelompok pengguna ssl-cert
Ternyata saya salah menghapus pengguna Postgres dari
ssl-cert
grup. Jalankan kode di bawah ini untuk memperbaiki masalah grup pengguna dan memperbaiki izinsumber
Dalam kasus saya itu disebabkan oleh kesalahan ketik yang saya buat saat mengedit
/etc/postgresql/9.5/main/pg_hba.conf
Aku berubah:
untuk:
Tetapi
MD5
harus huruf kecilmd5
:sumber
trusted
bukantrust
, dan tidak memulai kembali layanan, dan itu hanya memecahkan hari berikutnya ketika saya sudah lupa apa yang saya ubahSaya menemukan mencopot Postgres terdengar tidak meyakinkan. Ini membantu menyelesaikan masalah saya:
Mulai server postgres:
Pastikan server mulai saat boot:
Informasi detail dapat ditemukan di situs DigitalOcean Di Sini.
sumber
Saya gagal menyelesaikan masalah ini dengan server postgres-9.5 saya. Setelah 3 hari kemajuan nol mencoba setiap permutasi dari perbaikan ini dan situs lain saya memutuskan untuk menginstal ulang server dan kehilangan pekerjaan selama 5 hari. Tapi, saya mereplikasi masalah pada contoh baru. Ini mungkin memberikan beberapa perspektif tentang cara memperbaikinya sebelum Anda mengambil pendekatan katastropik yang saya lakukan.
Pertama, nonaktifkan semua pengaturan logging di postgresql.conf. Ini bagiannya:
Komentari semua yang ada di bagian itu. Kemudian mulai kembali layanan.
Saat memulai ulang, gunakan
/etc/init.d/postgresql start
ataurestart
saya merasa terbantu berada dalam mode superuser saat memulai kembali. Saya membuka x-window hanya untuk operasi itu. Anda dapat menetapkan mode superuser dengansudo -i
.Verifikasi bahwa server dapat dihubungi dengan perintah sederhana ini:
psql -l -U postgres
Jika itu tidak memperbaikinya, maka pertimbangkan ini:
Saya mengubah kepemilikan pada banyak folder ketika mencoba menemukan solusi. Saya tahu bahwa saya mungkin akan mencoba untuk mengembalikan kepemilikan folder dan
chmod
selama 2 hari lagi. Jika Anda telah mengacaukan kepemilikan folder tersebut dan tidak ingin membersihkan server Anda sepenuhnya, maka mulailah melacak pengaturan untuk semua folder yang terkena dampak untuk membawanya kembali ke keadaan semula. Anda mungkin ingin mencoba melakukan instalasi paralel pada sistem lain dan secara sistematis memeriksa kepemilikan dan pengaturan semua folder. Melelahkan, tetapi Anda mungkin bisa mendapatkan akses ke data Anda.Setelah Anda mendapatkan akses, ubah secara sistematis setiap baris yang relevan di
# ERROR REPORTING AND LOGGING
bagianpostgresql.conf
file. Mulai ulang dan uji. Saya menemukan bahwa folder default untuk log menyebabkan kegagalan. Saya secara khusus berkomentarlog_directory
. Folder default yang digunakan sistem untuk memasukkan log/var/log/postgresql
.sumber
Mungkin itu bisa terjadi karena Anda mengubah izin
/var/lib/postgresql/9.3/main
folder.Coba ubah ke 700 menggunakan perintah di bawah ini:
sumber
Ini tidak persis terkait dengan pertanyaan karena saya menggunakan Flask, tetapi ini adalah kesalahan yang saya dapatkan dan ini adalah utas yang paling relevan untuk mendapatkan ide.
Setup saya: Windows Subsystem untuk Linux, Docker-compose dengan makefile dengan dockerfile, Flask, Postgresql (menggunakan skema yang terdiri dari tabel)
Untuk terhubung ke postgres, atur string koneksi Anda seperti ini:
CATATAN: Saya tidak pernah mendapatkan IP apa pun (misalnya localhost, 127.0.0.1) untuk bekerja menggunakan metode apa pun di utas ini. Gagasan untuk menggunakan nama wadah alih-alih localhost berasal dari sini: https://github.com/docker-library/postgres/issues/297
Tetapkan skema Anda:
Tetapkan jalur pencarian Anda untuk fungsi-fungsi Anda ketika Anda mengatur sesi Anda:
sumber
Saya memiliki masalah yang sama persis seperti yang dijelaskan Peter Eisentraut. Menggunakan
netstat -nlp | grep 5432
perintah, saya bisa melihat server mendengarkan pada socket/tmp/.s.PGSQL.5432
.Untuk memperbaiki ini, cukup edit
postgresql.conf
file Anda dan ubah baris berikut:Sekarang jalankan
service postgresql-9.4 restart
(Ganti 9-4 dengan versi Anda), dan koneksi jarak jauh seharusnya berfungsi sekarang.Sekarang untuk mengizinkan koneksi lokal, cukup buat tautan simbolis ke
/var/run/postgresql
direktori.Jangan lupa untuk memastikan bahwa Anda
pg_hba.conf
dikonfigurasi dengan benar juga.sumber
Dalam kasus saya, yang harus saya lakukan adalah ini:
lalu
Ini bekerja dengan baik. Semoga ini bisa membantu. Ceria :).
sumber
Temukan file Anda:
Hasil:
Login sebagai pengguna postgres:
sumber
Saya memiliki masalah yang sama (di Ubuntu 15.10 (wily)).
sudo find / -name 'pg_hba.conf' -print
atausudo find / -name 'postgresql.conf' -print
muncul kosong. Sebelumnya tampak beberapa instal postgresql diinstal.Anda mungkin memiliki yang serupa ketika Anda melihat diinstal, atau masalah ketergantungan daftar
dan seterusnya.
Dalam hal ini Anda harus
sudo apt-get autoremove
setiap paket 1 per 1.Kemudian ikuti ini ke surat dan Anda akan baik-baik saja. Terutama ketika datang untuk mengimpor kunci dan menambahkan ke daftar sumber PERTAMA
Jika tidak menggunakan wily, ganti
wily
dengan rilis Anda, yaitu dengan output darilsb_release -cs
Dan kemudian Anda harus baik-baik saja dan dapat terhubung dan membuat pengguna.
Output yang diharapkan:
Sumber solusi saya (kredit)
sumber
Walaupun memiliki masalah yang sama saya mencoba sesuatu yang berbeda:
Mulai daemon postgresql secara manual, saya dapat:
Jadi yang saya lakukan adalah menetapkan batas bawah untuk
shared_buffers
danmax_connections
ke dalampostgresql.conf
danrestart
layanan.Ini memperbaiki masalah!
Berikut log kesalahan lengkap:
sumber
Setelah banyak upaya yang melelahkan, saya menemukan solusinya berdasarkan posting lain!
sumber
Buat direktori postgresql di dalam run dan kemudian jalankan perintah berikut.
sumber
Cukup tambahkan / tmp unix_socket_directories
postgresql.conf
sumber