Saya telah berhasil merusak lingkungan pengembangan lokal saya.
Semua aplikasi Rails lokal saya sekarang memberikan kesalahan:
PGError
could not connect to server: Permission denied
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
Saya tidak tahu apa yang menyebabkan ini.
Saat mencari solusi, saya telah memperbarui semua permata yang dibundel, permata sistem yang diperbarui, MacPorts yang diperbarui. Tidak ada kegembiraan.
Orang lain telah melaporkan masalah ini saat memutakhirkan dari OSX Leopard ke Lion, karena kebingungan tentang versi Postgres mana yang harus digunakan (yaitu, versi OSX atau versi MacPorts). Saya telah menjalankan Lion selama beberapa bulan, jadi tampaknya aneh jika hal ini terjadi sekarang.
Saya enggan main-main terlalu banyak tanpa terlebih dahulu memahami apa masalahnya. Bagaimana cara men-debug ini secara metodis?
Bagaimana cara menentukan berapa banyak versi PostgreSQL yang ada di sistem saya, mana yang sedang diakses, dan di mana lokasinya? Bagaimana cara memperbaikinya jika PostgreSQL yang salah digunakan?
Maaf untuk pertanyaan noob. Saya masih mempelajari cara kerjanya! Terima kasih atas petunjuknya.
EDIT
Beberapa pembaruan berdasarkan saran dan komentar di bawah ini.
Saya mencoba menjalankan pg_lsclusters
yang mengembalikan command not found
kesalahan.
Saya kemudian mencoba lokal file pg_hba.conf saya dan menemukan tiga file contoh ini:
/opt/local/share/postgresql84/pg_hba.conf.sample
/opt/local/var/macports/software/postgresql84/8.4.7_0/opt/local/share/postgresql84/pg_hba.conf.sample
/usr/share/postgresql/pg_hba.conf.sample
Jadi saya berasumsi 3 versi PSQL diinstal? Macports, OSX default dan ???.
Saya kemudian melakukan pencarian untuk skrip startup launchctl ps -ef | grep postgres
yang kembali
0 56 1 0 11:41AM ?? 0:00.02 /opt/local/bin/daemondo --label=postgresql84-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper restart ; --pid=none
500 372 1 0 11:42AM ?? 0:00.17 /opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb
500 766 372 0 11:43AM ?? 0:00.37 postgres: writer process
500 767 372 0 11:43AM ?? 0:00.24 postgres: wal writer process
500 768 372 0 11:43AM ?? 0:00.16 postgres: autovacuum launcher process
500 769 372 0 11:43AM ?? 0:00.08 postgres: stats collector process
501 4497 1016 0 12:36PM ttys000 0:00.00 grep postgres
Saya telah memposting konten postgresql84-server.wrapper di http://pastebin.com/Gj5TpP62 .
Saya mencoba menjalankan port load postgresql184-server
tetapi menerima kesalahan Error: Port postgresql184-server not found
.
Saya masih sangat bingung bagaimana cara memperbaikinya, dan menghargai petunjuk "untuk dummies".
Terima kasih!
EDIT2
Masalah ini dimulai setelah saya mengalami masalah dengan daemondo. Aplikasi Rails lokal saya mogok dengan kesalahan aplikasi di sepanjang baris "permata daemondo tidak dapat ditemukan". Saya kemudian melalui serangkaian pembaruan bundel, pembaruan permata, pembaruan port dan pembaruan minuman untuk mencoba dan menemukan masalahnya.
Mungkinkah kesalahan ini menjadi masalah dengan daemondo?
sumber
pg_lsclusters
danpg_hba.conf
file Anda .Jawaban:
Ini benar-benar terlihat seperti kesalahan izin file. Soket domain Unix adalah file dan memiliki izin pengguna seperti yang lainnya. Sepertinya pengguna OSX yang mencoba mengakses database tidak memiliki izin file untuk mengakses file soket. Untuk mengonfirmasi ini, saya telah melakukan beberapa tes pada Ubuntu dan psql untuk mencoba menghasilkan kesalahan yang sama (termasuk di bawah).
Anda perlu memeriksa izin pada file soket dan direktorinya
/var
dan/var/pgsql_socket
. Aplikasi Rails Anda (pengguna OSX) harus memiliki izin eksekusi (x) pada direktori ini (sebaiknya berikan izin kepada semua orang) dan soket harus memiliki izin penuh (wrx). Anda dapat menggunakanls -lAd <file>
untuk memeriksa ini, dan jika salah satu dari mereka adalah symlink, Anda perlu memeriksa file atau dir yang dituju oleh link.Anda dapat mengubah izin pada dir untuk Anda sendiri, tetapi soket dikonfigurasi oleh postgres di
postgresql.conf
. Ini dapat ditemukan di direktori yang sama denganpg_hba.conf
(Anda harus mencari tahu yang mana). Setelah Anda mengatur izin, Anda perlu memulai ulang postgresql.EDIT:
Saya telah melakukan pencarian cepat di google yang mungkin ingin Anda lihat untuk melihat apakah itu relavent. Ini mungkin mengakibatkan upaya apa pun untuk
find
file konfigurasi Anda gagal.http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html
Pesan kesalahan:
Pengguna tidak ditemukan di pg_hba.conf
Autentikasi sandi pengguna gagal:
File soket unix tidak ada:
Soket Unix ada, tetapi server tidak mendengarkannya.
Izin file buruk pada file socket unix :
sumber
PS
mengembalikan proses postgres sehingga berjalan. Bingung!Perasaan saya adalah bahwa ini (sekali lagi) adalah mac / OSX: ujung depan dan ujung belakang mengasumsikan lokasi yang berbeda untuk soket unix-domain (yang berfungsi sebagai titik pertemuan ).
Daftar Periksa:
ps aux | grep postgres | grep -v grep
harus melakukan triknyafind / -name .s.PGSQL.5432 -ls
(soket dulu berada di / tmp; Anda dapat mulai mencari di sana)Jika postgres berjalan, dan soket benar-benar ada, Anda dapat menggunakan:
psql -h /the/directory/where/the/socket/was/found mydbname
(yang mencoba untuk terhubung ke soket unix-domain)
; Anda sekarang harus mendapatkan prompt psql: coba
\d
dan kemudian\q
keluar. Anda juga bisa mencoba:psql -h localhost mydbname
.(yang mencoba untuk terhubung ke localhost (127.0.0.1)
Jika upaya ini gagal karena otorisasi yang tidak memadai, Anda dapat mengubah pg_hba.conf (dan SIGHUP atau restart) Dalam kasus ini: periksa juga log.
Pertanyaan serupa: Tidak bisa memulai Postgres
Catatan: Jika Anda dapat membuka prompt psql, perbaikan cepat untuk masalah ini hanya dengan mengubah
config/database.yml
, tambahkan:host: localhost
atau Anda dapat mencoba menambahkan:
host: /the/directory/where/the/socket/was/found
Dalam kasus saya,
host: /tmp
sumber
Coba hapus pg gem (
gem uninstall pg
) lalu instal ulang - jika Anda menggunakan bundler, makabundle install
, laingem install pg
. Selain itu, pastikan jalur mengambil versi yang benar: Lion memiliki versi posgresql (versi sebelumnya tidak) dan mungkin berada di jalur sebelum versi yang diinstal secara lokal (misalnya MacPorts, homebrew).Dalam kasus saya: instalasi homebrew postgresql, update postgresql, rails, dll. Dan kemudian mendapat kesalahan ini. Menghapus dan menginstal ulang permata pg melakukannya untuk saya.
sumber
Lokasi file socket dimasukkan ke dalam gem pada waktu kompilasi. Jadi Anda perlu membangun kembali permata pg Anda.
Ini harus menyelesaikan masalah khusus itu.
sumber
Jika Anda mendapatkan kesalahan serupa:
Ini mungkin berhasil (berhasil untuk saya):
Direktori yang ditentukan harus berbeda jika Anda tidak menggunakan OSX / Brew.
Catatan: Ini bukan pesan kesalahan persis seperti yang terlihat di atas, tetapi utas ini adalah hasil pertama untuk pesan kesalahan itu.
sumber
rm -fr /usr/local/var/postgres
sebelum berlariinitb
rm -rf /usr/local/var/postgres
ituinitdb /usr/local/var/postgres -E utf8
. Tetapi pastikan postgres tidak berjalan ketika Anda melakukan ini, jika tidak direktori akan segera dibuat ulang.apa yang menyelesaikan kesalahan ini bagi saya adalah menghapus file bernama postmaster.pid di direktori postgres. silakan lihat pertanyaan / jawaban saya menggunakan tautan berikut untuk petunjuk langkah demi langkah. masalah saya tidak terkait dengan izin file:
psql: tidak dapat terhubung ke server: Tidak ada file atau direktori seperti itu (Mac OS X)
orang-orang yang menjawab pertanyaan ini membuang banyak permainan, terima kasih untuk itu! saya memilih semua yang saya bisa
sumber
Beginilah cara saya memecahkan pesan kesalahan itu, sebagian berdasarkan jawaban wildplasser.
Jadi, ada soket saya atau apa pun, tetapi klien mencarinya di:
Jadi cukup buat tautan simbolis ke
/tmp/.s.PGSQL.5432
:Semoga ini bisa membantu siapa pun. Tampaknya agak salah, tapi hei, berhasil!
sumber
sudo mkdir /var/run/postgresql
folder (dalam kasus saya id tidak ada dan tidak dibuat oleh installer untuk pg 9.3.X).Saya mulai mendapatkan ini setelah memutakhirkan ke postgres baru - saya tidak menyadari bahwa saya memiliki file data.
Pertama saya mencoba memulai server postgres:
begitulah cara saya melihat kesalahan ini
Jadi saya menemukan jawaban ini di SO - terkait dengan kesalahan ketidakcocokan: /server/342626/how-do-i-upgrade-postgresl-database-incompatibility-error
Inilah yang memperbaikinya
sumber
Hanya mengonfirmasi bahwa saya memiliki masalah serupa di PSQL dan Django,
Sepertinya karena server psql saya tidak dimatikan dengan benar dan file postmaster.pid masih ada (harus dihapus saat dimatikan dengan benar secara otomatis) di folder postgres saya.
Menghapus ini dan semuanya bagus
sumber
psql: could not connect to server: No such file or directory.
Menghapuspostmaster.pid
dari/usr/local/var/postgres
membuat semuanya bekerja lagi.Saya mendapatkan kesalahan yang sama (ternyata itu adalah kesalahan dengan
postmaster.pid
. Berikut cara saya mengaktifkan dan menjalankan postgres lagi ( penghargaan kepada Ricardo Burillo untuk perbaikannya ):sumber
pg_resetxlog
kembali `file kunci" postmaster.pid "ada.Saya mengalami masalah serupa saat mencoba menggunakan postgresql dengan rel. Memperbarui Gemfile saya untuk menggunakan versi baru permata pg memecahkan masalah ini untuk saya. (gem pg versi 0.16.0 bekerja). Dalam penggunaan Gemfile:
kemudian jalankan perintah berikut untuk memperbarui permata
sumber
Saya membaca banyak topik tentang kesalahan ini dan solusi bagi saya adalah dengan memulai ulang postgres dengan:
Yang tidak disebutkan di sini.
sumber
Saya mencari solusi untuk sementara waktu. Jadi, yang ini memperbaiki masalah untuk saya juga (reinit db):
Saya menggunakan OS X 10.11.3 dengan minuman.
sumber
Ini terjadi pada saya hari ini setelah baterai Macbook saya mati. Saya pikir ini bisa disebabkan oleh pematian yang tidak tepat. Yang harus Anda lakukan dalam kasus seperti saya adalah menghapus postmaster.pid
Arahkan ke folder tersebut
Periksa untuk melihat apakah postmaster.pid ada
Hapus postmaster.pid
sumber
Dalam kasus saya, tidak ada solusi sebelumnya yang baik. Alih-alih menggunakan soket, Anda dapat menggunakan nomor TCP
host
+port
di file konfigurasi Rails. Jadi dalamdatabase.yml
file cukup tambahkan dua baris seperti di sini:Ini memecahkan masalah saya :)
Sebelum saya menggunakan perbaikan ini:
Tetapi setelah setiap reboot
/tmp/.s.PGSQL.5432
dihapus dan saya harus mengulangi perintah ini. Solusi berfungsi, tetapi mengerikan, jadi lebih baik ubah saja file konfigurasi database Rails :)sumber
Mendapat kesalahan ini ketika saya sedang menyiapkan Posgtres dengan Django, saya menggunakan Jalur Belakang dan itu datang dengan Postgres diinstal. Saya berasumsi bahwa pengaturan masalahnya. Saya memperbaikinya dengan menghapusnya sepenuhnya lalu menginstal ulang seperti itu.
Sekarang jalankan:
untuk menghapus semua PostgreSQL dari sistem Anda. Hanya membersihkan paket postgres tidak cukup karena ini hanya paket meta kosong.
Setelah semua paket PostgreSQL dihapus, jalankan:
Anda sekarang harus dapat:
sumber
MacOSX di sini. Saya mengalami masalah yang sama setelah memutakhirkan pemasangan postresql saya dari pra-9.1 ke 9.1.2 menggunakan homebrew. (Ngomong-ngomong, ingatlah untuk membuang database sebelum upgrade Anda dengan pg_dump, database pre-9.1 tidak kompatibel.) Masalah yang sama, pesan kesalahan yang sama.
Menghapus instalasi permata pg melakukan trik untuk saya. Sebenarnya saya harus menari sedikit untuk menemukan masalahnya. Pertama saya melakukan pencopotan permata global, membersihkan dek dari semua permata lama (ada beberapa). Kemudian saya menghapus pg dari Gemfile saya, membundel ulang, memulihkan referensi pg, dan memantul sekali lagi.
Setelah itu, itu bekerja dengan sangat baik.
sumber
Halo dunia :)
Cara terbaik tapi aneh bagi saya adalah melakukan hal-hal selanjutnya.
1) Unduh postgres93.app atau versi lain. Tambahkan aplikasi ini ke / Applications / folder.
2) Tambahkan baris (perintah) ke dalam file
Ini adalah PATH untuk.bash_profile
(yang ada di direktori home saya):psql
dariPostgres93.app
. Baris (perintah) berjalan setiap kali konsol dimulai.3) Luncurkan
Postgres93.app
dari/Applications/
folder. Ini memulai server lokal (port adalah "5432" dan host adalah "localhost").4) Setelah semua manipulasi ini saya senang untuk menjalankan
$ createuser -SRDP user_name
dan perintah lain dan melihat bahwa itu berhasil!Postgres93.app
dapat dijalankan setiap kali sistem Anda dimulai.5) Juga jika Anda ingin melihat database Anda secara grafis, Anda harus menginstal
PG Commander.app
. Ini cara yang baik untuk melihat postgres DB Anda sebagai tabel data yang cantikTentu saja, ini hanya berguna untuk server lokal. Saya akan senang jika petunjuk ini membantu orang lain yang menghadapi masalah ini.
sumber
Saya memiliki masalah ini mengganggu saya, dan setelah penyelidikan lebih lanjut (berjalan
rake db:setup
), saya melihat bahwa rel mencoba untuk terhubung ke contoh postgres yang digunakan sebelumnya - yang disimpan dalam variabel env sebagai DATABASE_URL.Cara mengatasinya:
unset DATABASE_URL
sumber: https://stackoverflow.com/a/17420624/2577622
sumber
Saya mencoba sebagian besar solusi untuk masalah ini tetapi tidak dapat berhasil.
Saya menjalankan
lsof -P | grep ':5432' | awk '{print $2}'
yang menunjukkan PID dari proses yang sedang berjalan. Namun saya tidak bisa membunuhnya dengankill -9 <pid>
.Ketika saya menjalankan
pkill postgresql
prosesnya akhirnya berhenti. Semoga ini membantu.sumber
Di OS X dengan Homebrew:
sumber