psql: tidak dapat terhubung ke server: Tidak ada file atau direktori (Mac OS X)

247

Setelah me-restart Mac saya, saya mendapatkan kesalahan Postgres yang ditakuti:

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"?

Alasan ini terjadi adalah karena macbook saya benar-benar membeku karena masalah yang tidak berhubungan dan saya harus melakukan reboot dengan menggunakan tombol power. Setelah reboot saya tidak dapat memulai Postgres karena kesalahan ini.

Naga api
sumber
1
Sebagai cek kewarasan, pastikan Anda memiliki PG berjalan pada mesin Anda
Jbur43
1
Ketika Anda meninggalkan jawabannya, silakan coba jelaskan MENGAPA hal ini terjadi, atau bagaimana sistem Postgres bekerja sehingga kita semua tidak hanya mencoba hal-hal acak.
Nick Res
6
brew reinstall postgresql stackoverflow.com/a/39781473/6086226 bekerja untuk saya
Derk Jan Speelman
buat instal ulang postgresql ini memecahkan masalah saya
Ajay Kumar

Jawaban:

421

PERINGATAN: Jika Anda menghapus postmaster.pid tanpa memastikan benar-benar tidak ada postgresproses yang menjalankan Anda, bisa merusak database Anda secara permanen . (PostgreSQL harus menghapusnya secara otomatis jika postmaster telah keluar.).

SOLUSI: Ini memperbaiki masalah - Saya menghapus file ini, dan kemudian semuanya berhasil!

/usr/local/var/postgres/postmaster.pid

-

dan inilah cara saya mengetahui mengapa ini perlu dihapus.

  1. Saya menggunakan perintah berikut untuk melihat apakah ada proses PG yang berjalan. bagi saya tidak ada, saya bahkan tidak bisa memulai server PG:

    ps auxw | grep post
  2. Saya mencari file .s.PGSQL.5432 yang ada di pesan kesalahan di atas. saya menggunakan perintah berikut:

    sudo find / -name .s.PGSQL.5432 -ls

    ini tidak menunjukkan apa-apa setelah mencari seluruh komputer saya sehingga file tidak ada, tetapi jelas psql"ingin" atau "pikir itu ada".

  3. Saya melihat log server saya dan melihat kesalahan berikut:

    cat /usr/local/var/postgres/server.log

    di akhir log server saya melihat kesalahan berikut:

    FATAL:  pre-existing shared memory block (key 5432001, ID 65538) is still in use
    HINT:  If you're sure there are no old server processes still running, remove the shared memory block or just delete the file "postmaster.pid".
  4. Mengikuti saran dalam pesan kesalahan, saya menghapus file postmaster.pid di direktori yang sama dengan server.log. Ini menyelesaikan masalah dan saya bisa memulai kembali.

Jadi, sepertinya macbook saya macet dan di-boot-ulang menyebabkan Postgres berpikir bahwa prosesnya masih berjalan bahkan setelah reboot. Menghapus file ini terselesaikan. Semoga ini bisa membantu orang lain! Banyak orang memiliki masalah yang sama tetapi sebagian besar jawabannya ada hubungannya dengan izin file, sedangkan dalam kasus saya hal-hal berbeda.

Naga api
sumber
9
semoga jawaban ini akhirnya membantu orang lain, dan terima kasih kepada orang yang mengangkatnya. Meskipun moderator yang menandai pertanyaan ini sebagai duplikat, pertanyaan itu unik dan bermanfaat. terima kasih stack overflow untuk situs yang luar biasa dan para ahli di sini untuk berbagi!
FireDragon
2
Hanya FWIW, menghapus postmaster.pid berbahaya, Anda harus benar - benar yakin tidak ada postgresproses yang berjalan sebelum Anda melakukannya.
Craig Ringer
21
Jawaban yang bagus Terima kasih telah memposting seluruh proses Anda daripada hanya perintah yang berpotensi merusak!
dojosto
3
Sepakat. Jawaban tentang postmaster.pid baik, tetapi setiap langkah dari proses mencari tahu apakah / di mana postgres berjalan, sangat berharga . Terima kasih!
Clinton
11
Log postgres saya di macos ada di /usr/local/var/log/postgres.log.
Ryan Tuck
172

Tak satu pun dari yang di atas bekerja untuk saya. Saya harus menginstal ulang Postgres dengan cara berikut:

  • Copot postgresql dengan brew: brew uninstall postgresql
  • brew doctor (perbaiki apa pun yang ada di sini)
  • brew cleanup
  • Hapus semua folder Postgres:

    • rm -r /usr/local/var/postgres
    • rm -r /Users/<username>/Library/Application\ Support/Postgres
  • Instal ulang postgresql dengan brew: brew install postgresql

  • Mulai server: brew services start postgresql
  • Anda sekarang harus membuat database Anda ... ( createdb)
ypicard
sumber
4
Bekerja untuk saya, namun saya tidak harus menghapus database aktual dan tidak memiliki folder di Dukungan Aplikasi. Saya pikir intinya adalah bahwa beberapa elemen minuman telah merusak symlink saat memasang postgres. Memperbaiki mereka dan menginstal postgres lagi memecahkan masalah. Terima kasih!
Kulbi
2
Baik ini maupun jawaban teratas tidak berfungsi untuk saya, sampai saya juga berlaribrew postgresql-upgrade-database
ErikAGriffin
Ini bekerja untuk saya, kecuali saya tidak harus menghapus data lama.
Amal Antony
Untuk mengonfirmasi: ini menghapus semua basis data Anda, benar? Saya dapat bertahan dengan hanya brew reinstall postgres, mengkonfirmasikan bahwa nomor versi utama Homebrew Postgres terbaru adalah sama dengan nomor saya saat ini (rusak).
Jacob Ford
85

Jika Anda menggunakan MacOS dan menginstal postgres via homebrew, coba mulai lagi dengan

brew services restart postgresql

Jika Anda menggunakan Ubuntu, Anda dapat memulai ulang dengan salah satu dari perintah ini

sudo service postgresql restart

sudo /etc/init.d/postgresql restart
Jagdish Barabari
sumber
34

Mungkin ini tidak terkait tetapi kesalahan serupa muncul ketika Anda memutakhirkan postgreske versi utama menggunakan brew; menggunakan brew info postgresqlmenemukan ini yang membantu:

To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database
Gila Barney
sumber
4
Ini bekerja untuk saya pada
11-12
1
Bekerja untuk saya juga
emptywalls
15

Ini cara saya:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm /usr/local/var/postgres/postmaster.pid
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
smartworld-dm
sumber
1
Ini bekerja untuk saya ketika tidak ada yang lain menghentikan dan memulai / memulai kembali / menginstal ulang Postgres menggunakan homebrew dilakukan. Terima kasih @ smartworld-dm
Bradley
1
Ini adalah soultion yang selalu kukembalikan. Saya mungkin menambahkan alias bahwa ketika saya menjalankannya fix-my-postgresqlakan menjalankan ini :)
Tomas K
1
Adakah ide mengapa saya harus melakukan ini setiap kali saya me-reboot PC saya?
stephano
11

jika Anda postmaster.pidpergi dan Anda tidak dapat memulai kembali atau apa pun, lakukan ini:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

seperti yang dijelaskan di sini pada awalnya

Antoine
sumber
8

Halo dunia :)
Cara terbaik tetapi aneh bagi saya adalah melakukan hal-hal selanjutnya.

1) Unduh postgres93.app atau versi lain. Tambahkan aplikasi ini ke / Aplikasi / folder.

2) Tambahkan baris (perintah) ke dalam file.bash_profile (yang ada di direktori home saya):

export PATH = / Aplikasi / Postgres93.app / Contents / MacOS / bin /: $ PATH
Ini adalah PATH psqldariPostgres93.app . Baris (perintah) berjalan setiap kali konsol dimulai.

3) Luncurkan Postgres93.appdari/Applications/ folder. Ini memulai server lokal (port adalah "5432" dan host adalah "localhost").

4) Setelah semua manipulasi ini saya senang menjalankan $ createuser -SRDP user_namedan perintah lain dan melihat bahwa itu berhasil!Postgres93.appdapat dibuat untuk dijalankan setiap kali sistem Anda mulai.

5) Juga jika Anda ingin melihat database Anda secara grafis Anda harus menginstalPG Commander.app . Ini cara yang baik untuk melihat postgres DB Anda sebagai tabel data yang cantik

Tentu saja, ini hanya bermanfaat untuk server lokal. Saya akan senang jika instruksi ini membantu orang lain yang menghadapi masalah ini.

crazzyaka
sumber
1
Kuncinya di sini adalah menambahkan Postgres ke jalur Anda (langkah 2). Itu membantu saya. Jika Anda menginstal Postgres menggunakan Homebrew, Anda dapat menambahkannya ke jalur Anda dengan menambahkan baris berikut ke .bash_profile Anda: export PATH='/usr/local/Cellar/postgresql/9.4.1/bin/':$PATH- Ingatlah bahwa nomor versi Anda mungkin berbeda.
Tina
7

Masalah ini memiliki banyak sumber, dan karenanya banyak jawaban. Saya sudah mengalami masing-masing.

1) Jika Anda mengalami crash, menghapus file /usr/local/var/postgres/postmaster.pid mungkin diperlukan karena postgres mungkin tidak menanganinya dengan benar. Tetapi pastikan tidak ada proses yang berjalan.

2) Craig Ringer telah menunjukkan dalam posting lain bahwa bundling Apple postgreSQL mengarah ke masalah instalasi pg gem. Mengatur variabel lingkungan PATH adalah solusi.

3) Solusi lain, adalah menghapus dan menginstal ulang permata. Pembaruan minuman mungkin diperlukan juga.

Jika Anda menemukan posting ini, jika Anda dapat menentukan salah satu sumber, Anda akan menghemat waktu ...

Jerome
sumber
3
Saya senang saya memposting ini. Kecelakaan lain & jawabannya bisa ditanggulangi dengan cepat ...
Jerome
6

Bagi saya, solusinya hanyalah me-restart komputer saya. Saya pertama kali mencoba memulai kembali dengan layanan Brew dan ketika itu tidak berhasil, memulai kembali sepertinya pilihan terbaik berikutnya untuk mencoba sebelum melihat ke beberapa solusi yang lebih terlibat. Semuanya bekerja sebagaimana mestinya setelahnya.

Matt Lemieux
sumber
5

Saya menghadapi masalah serupa di sini saya memecahkan masalah ini seperti di bawah ini.

Sebenarnya proses postgres sudah mati, untuk melihat status postgres jalankan perintah berikut

sudo /etc/init.d/postgres status

Itu akan mengatakan proses sudah mati` hanya memulai proses

sudo /etc/init.d/postgres start
Jagdish Barabari
sumber
Terima kasih atas jawabannya, jawaban Anda membantu saya memecahkan masalah yang sama dengan beberapa modifikasi: sudo /etc/init.d/postgresql start
Pravitha V
4

Ini terjadi pada saya setelah Mac saya (High Sierra) membeku dan saya harus me-restart secara manual (tekan dan tahan tombol power). Yang harus saya lakukan untuk memperbaikinya adalah melakukan restart bersih.

skwidbreth
sumber
3

Masalah saya akhirnya adalah bahwa saya menggunakan Gas Mask (manajer file host untuk Mac), dan saya tidak memiliki entri untuk localhost di file host yang saya gunakan.

Saya tambahkan:

127.0.0.1 localhost

Dan itu menyelesaikan masalah saya.

jawns317
sumber
3

Saya tidak sepenuhnya yakin mengapa, tetapi instalasi Postgres saya sedikit kacau dan beberapa file terhapus sehingga muncul kesalahan OP.

Terlepas dari kenyataan bahwa saya dapat menjalankan perintah suka brew service retart postgresdan melihat pesan yang tepat, kesalahan ini tetap ada.

Saya membaca dokumentasi postgres dan menemukan bahwa file saya /usr/local/var/postgresbenar-benar kosong. Jadi saya menjalankan yang berikut:

initdb /usr/local/var/postgres

Tampaknya beberapa konfigurasi terjadi dengan perintah itu.

Kemudian ia meminta saya untuk menjalankan ini:

postgres -D /usr/local/var/postgres

Dan itu memberi tahu saya file postmaster.pid sudah ada.

Saya hanya perlu tahu apakah minuman akan dapat mengambil konfigurasi yang baru saja saya jalankan, jadi saya mengujinya.

ls /usr/local/var/postgres

Itu menunjukkan saya file postmaster.pid. Saya kemudian melakukannya brew services stop postgresql, dan file postmaster.pid menghilang. Lalu saya lakukanbrew services start postgresql , dan VIOLA, file itu muncul kembali.

Kemudian saya melanjutkan dan menjalankan aplikasi saya, yang ternyata menemukan servernya, tetapi database saya sepertinya hilang.

Meskipun saya tahu bahwa mereka mungkin tidak hilang sama sekali - inisialisasi baru yang saya lakukan mungkin telah membuat data_area baru, dan yang lama tidak diarahkan. Saya harus melihat di mana itu dan mengarahkannya kembali atau hanya membuat database saya lagi.

Semoga ini membantu! Membaca dokumen postgres sangat membantu saya. Saya benci membaca jawaban yang seperti "Tempel ini berhasil!" karena saya tidak tahu apa yang sedang terjadi dan mengapa.

Nick Res
sumber
2

Penyebab kesalahan ini banyak sehingga pertama-tama cari file log Anda dan periksa apakah ada petunjuk. Mungkin di /usr/local/var/log/postgres.logatau /usr/local/var/postgres/server.logatau di tempat lain. Jika Anda menginstal dengan Homebrew, Anda dapat menemukan lokasinya di ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist.

Tamlyn
sumber
2

Saya memiliki masalah yang sama. Seringkali, masalahnya adalah fakta bahwa ada file sisa

/usr/local/var/postgres/postmaster.pid

yang bekerja untuk kebanyakan orang, tetapi kasus saya berbeda - saya mencoba googling masalah ini selama 3 jam terakhir, uninstall postresql pada OSX melalui minuman, membersihkan database, tidak ada yang berhasil.

Akhirnya, saya perhatikan bahwa saya memiliki masalah dengan minuman yang setiap kali saya mencoba menginstal apa pun, muncul:

Error: Permission denied @ rb_sysopen - /private/tmp/github_api_....

atau sesuatu seperti itu di akhir instalasi.

Saya hanya melakukannya sudo chmod -R 777 /private/tmpdan akhirnya berhasil!

Saya menulis ini karena ini mungkin menjadi solusi untuk orang lain

Maciej Pk
sumber
1

Pergi ke /var/log/ dan jalankan cat postgres.log Di sini Anda akan menemukan alasan kegagalan postgres. Jika itu adalah smart shut down maka mungkin icu4cversi Anda (C ++ library untuk Unicode) tidak tepat yang terhubung dengan postgres. Jadi jalankan perintah berikut.

brew upgrade brew cleanup Ini seharusnya bekerja;)

Shishir
sumber
Mungkin harus berjalan brew stylesetelah itu jika brew cleanupmematahkan Homebrew.
olliezhu
0

Saya harus melihat posting ini beberapa kali untuk menyelesaikan masalah ini. Ada perbaikan lain, yang juga akan berlaku untuk masalah serupa dengan program yang sedang berjalan lainnya.

Saya baru saja menemukan Anda dapat menggunakan dua perintah berikut.

$ top

Ini akan menunjukkan semua tindakan yang sedang berjalan dengan nomor pid mereka. Ketika Anda menemukan postgres dan pid terkait

$ kill pid_number

cohart
sumber
0

Saya baru saja mendapatkan masalah yang sama dengan saya telah menempatkan mesin saya ( ubuntu) untuk pembaruan dan mendapat kesalahan di bawah ini:

tidak dapat terhubung ke server: Tidak ada file atau direktori seperti itu Apakah server berjalan secara lokal dan menerima koneksi pada soket domain Unix "/var/run/postgresql/.s.PGSQL.5432"?

Setelah menyelesaikan proses pembaruan ketika saya memulai kembali kesalahan sistem saya hilang. Dan kerjanya seperti pesona seperti sebelumnya .. Saya kira ini terjadi karena pg memperbarui dan proses lain dimulai.

Gagan Gami
sumber
0

SUPER NEWBIE ALERT: Saya baru belajar pengembangan web dan tutorial khusus yang saya ikuti tadi menyebutkan saya harus menginstal Postgres tetapi tidak benar-benar menyebutkan saya harus menjalankannya juga ... Setelah saya membuka aplikasi Postgres semuanya baik-baik saja dan pesolek.

Lorenzo
sumber
0

@Jagdish Barabari memberi saya petunjuk yang saya butuhkan untuk menyelesaikan ini. Ternyata ada dua versi postgresql yang diinstal sementara hanya satu yang berjalan. Membersihkan semua file postgresql dan menginstal ulang versi terbaru menyelesaikan masalah ini untuk saya.

5280Angel
sumber
0

Saya menghapus / usr / lib dari LD_LIBRARY_PATH dan berhasil. Saya bekerja di poster dockerfile: alpine.

ddtraveller
sumber