Postgres tidak dapat terhubung ke server

416

Setelah saya membuat pembaruan dan membuat pembaruan, postgres saya mengalami masalah. Saya mencoba mencopot postgres dan menginstal lagi, tetapi tidak berhasil juga.

Ini adalah pesan kesalahan. (Saya juga mendapat pesan kesalahan ini ketika saya mencoba melakukan rake db: bermigrasi)

$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Bagaimana saya bisa menyelesaikannya?

Versi Mac: Singa Gunung.

versi homebrew: 0.9.3

versi postgres: psql (PostgreSQL) 9.2.1

Dan inilah yang saya lakukan.

12:30 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.2.1...
12:31 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.1.4...
12:31 ~/D/works$ psql --version
bash: /usr/local/bin/psql: No such file or directory
12:33 ~/D/works$ brew install postgresql
==> Downloading http://ftp.postgresql.org/pub/source/v9.2.1/postgresql-9.2.1.tar.bz2
Already downloaded: /Library/Caches/Homebrew/postgresql-9.2.1.tar.bz2
......
......
==> Summary
/usr/local/Cellar/postgresql/9.2.1: 2814 files, 38M, built in 2.7 minutes
12:37 ~/D/works$ initdb /usr/local/var/postgres -E utf8
The files belonging to this database system will be owned by user "laigary".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".

initdb: directory "/usr/local/var/postgres" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/usr/local/var/postgres" or run initdb
with an argument other than "/usr/local/var/postgres".
12:39 ~/D/works$ mkdir -p ~/Library/LaunchAgents
12:39 ~/D/works$   cp /usr/local/Cellar/postgresql/9.2.1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
12:39 ~/D/works$   launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
homebrew.mxcl.postgresql: Already loaded
12:39 ~/D/works$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
12:39 ~/D/works$ env ARCHFLAGS="-arch x86_64" gem install pg
Building native extensions.  This could take a while...
Successfully installed pg-0.14.1
1 gem installed
12:42 ~/D/works$ psql --version
psql (PostgreSQL) 9.2.1
12:42 ~/D/works$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Sekarang, setelah saya menginstal ulang howbrew, ketika saya gunakan $ psql, itu tidak menampilkan pesan kesalahan.

Tapi saya berjalan rake db:migratedi aplikasi rel saya, itu menunjukkan:

could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `connect'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:309:in `new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:319:in `checkout_new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:241:in `block (2 levels) in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `loop'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `block in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:233:in `checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:96:in `block in connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:404:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:170:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:144:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:107:in `rescue in create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:51:in `create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (3 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (2 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:63:in `run'
/usr/local/bin/rake:32:in `<main>'
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"riy_development", "pool"=>5, "username"=>nil, "password"=>nil}

Akhirnya saya menemukan solusinya.

$ sudo mkdir /var/pgsql_socket/
$ sudo ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

Solusi ini sedikit rumit, tetapi berhasil. Semoga ada yang punya solusi yang lebih baik

Memperbarui

Ini juga berfungsi untuk saya.

rm /usr/local/var/postgres/postmaster.pid
Gary Lai
sumber
3
Saya mengalami masalah yang sama persis dengan Anda, tetapi solusi Anda tidak berhasil untuk saya. Saya pikir ini adalah masalah izin tetapi saya tidak memiliki pengetahuan tentang izin file untuk memperbaikinya.
ajbraus
Untuk mereka yang menginstal PG melalui Homebrew dan mengalami masalah, saya menemukan jawaban lain. Cukup hapus pg gem dan instal ulang dengan konfigurasi Homebrew. Lihat jawabannya di stackoverflow.com/a/19609228/1072058 .
zquintana
jawaban serupa di sini - stackoverflow.com/questions/13573204/…
VelLes
1
Mulai postgres.
atw
4
Tingkatkan versi Anda yang ada ke versi yang lebih baru dengan perintah berikut brew postgresql-upgrade-database

Jawaban:

799

Punya masalah serupa; file pid memblokir postgres dari memulai. Untuk memperbaikinya:

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

dan kemudian semuanya baik-baik saja.

Jonathanpberger
sumber
4
Ini berfungsi untuk saya di OSX Mavericks setelah melihat masalah ini pada pembaruan / restart.
eprothro
3
@jstafford terima kasih, saya sudah menyelesaikan! :) Solusinya adalah meng-uninstall via homebew dan kemudian restart komputer saya segera, jadi saya akan dapat menginstal ulang postgres. Versi lama berjalan di latar belakang, membuat file dan konflik setiap kali saya mencoba menginstal ulang postgres.
betoharres
199
Ini tidak berhasil untuk saya di Mavericks:rm: /usr/local/var/postgres/postmaster.pid: No such file or directory
sscirrus
16
Ini bekerja untuk saya, setelah menghapus saya harus memulai postgres. # pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start
Ricardo Castañeda
12
Saya sarankan tailing log server untuk memastikan ini benar-benar masalah:tail /usr/local/var/postgres/server.log
Josh Bodah
255

Ini terkadang bisa menjadi masalah dengan peningkatan postgres.

Dalam kasus saya, itu terjadi ketika memutakhirkan dari 9,3 ke 9,4.

Lihat http://www.postgresql.org/docs/9.4/static/upgrading.html

OS X / Homebrew:

Coba jalankan postgres -D /usr/local/var/postgres- ini akan memberi Anda lebih banyak keluaran verbose jika postgres gagal memulai.

Dalam kasus saya, menjalankan rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8menghapus basis data lama saya dan kemudian menginisialisasi ulang skema postgres db.

Terima kasih kepada https://github.com/Homebrew/homebrew/issues/35240 untuk solusi itu.

Setelah meregenerasi database saya (dengan rake db:create) semuanya bekerja dengan baik lagi.

FreePender
sumber
1
Ini bekerja untuk saya dengan postgres yang diinstal pada Yosemite.
cpursley
7
Jika running postgres -D /usr/local/var/postgresmemberi tahu Anda bahwa direktori data diinisialisasi dengan versi Postgres yang lebih lama dan tidak kompatibel, dan Anda tidak ingin kehilangan data lokal Anda, Anda dapat mencoba utas ini
Nathan Long
Setelah perintah di atas dijalankan, saya berlari: pg_ctl -D /usr/local/var/postgres -l logfile startdan kemudian server saya mulai di latar belakang
Tommyixi
5
Gunakan brew services start postgrespada OSX untuk memulai postgres di latar bukannyapostgres -D /usr/local/var/postgres
Mike Andrianov
1
@coffekid Saya memiliki masalah yang sama, dan memperbaikinya dengan instruksi di sini: stackoverflow.com/questions/24379373/…
Micah Walter
68

Menemukan solusi yang bekerja untuk saya di sini:

/dba/75214/psql-could-not-connect-to-server-no-such-file-or-directory

Anda pada dasarnya menjalankan perintah berikut untuk memulai server secara manual:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Mosab Sasi
sumber
8
Dari semua jawaban, ini adalah satu-satunya yang bekerja untuk saya. Menggunakan El Capitan
Patrick_870206
Saya sudah mencoba dengan cmd itu tetapi tidak berhasil untuk saya !!
Harshit Trivedi
41

Jika menginstal dan menghapus postgres dengan minuman tidak berfungsi untuk Anda, lihat log instalasi postgresql Anda atau:

postgres -D /usr/local/var/postgres

jika Anda melihat output seperti ini:

LOG:  skipping missing configuration file "/usr/local/var/postgres/postgresql.auto.conf"
FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.4, which is not compatible with this version 9.6.1.

Kemudian coba yang berikut ini:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

Kemudian mulai server:

pg_ctl -D /usr/local/var/postgres -l logfile start

Sumber

svelandiag
sumber
2
Itu berfungsi ketika alasannya berbeda dari jawaban yang diterima, yaitu file database tidak kompatibel dengan versi saat ini. Karena persis itulah yang menjadi masalah saya, saya merasa jengkel.
Falk Schuetzenmeister
1
perintah ini bekerja untuk saya.
Ccr
bekerja untuk Mojave 10.14.6
Sgryt87
34

Pada Yosemite, jika file pid memblokir Postgres dari permulaan dan Anda memiliki launchctldaemon yang mencoba (dan gagal) untuk memuat daemon database, maka Anda harus membongkar file plist:

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Kemudian hapus file pid

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

Kemudian muat ulang launchctldaemon

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Ryan Atallah
sumber
28

Bagi siapa pun yang membaca ini dan menggunakan Postgres.app, Anda mungkin perlu host: localhostdi database.yml Anda. http://postgresapp.com/documentation#toc_3

David Winiecki
sumber
Melakukan hal ini akan mengubah koneksi dari soket ke koneksi TCP yang mungkin memiliki implikasi negatif. Lihat stackoverflow.com/questions/6770649/…
Brett Bim
1
Hmm, sebenarnya, jika Anda downvote ... Mungkin tidak mengatakan mengapa? meta.stackoverflow.com/questions/252297/… Atau mungkin mengatakan mengapa, tapi logout dulu sehingga Anda anonim.
David Winiecki
Saya pikir suara turun adalah karena pertanyaan aslinya bukan untuk Postgres.app tetapi Homebrew. Jadi, sementara jawabannya mungkin berguna di suatu tempat, itu tidak menjawab pertanyaan.
Brian Dear
Tautan sepertinya tidak menuju ke tempat tertentu (dan mencari "localhost" di masa lalu tidak memiliki hasil) tetapi ini hanya memperbaiki masalah bagi saya setelah satu jam mencari.
sixty4bit
25

Memutakhirkan database berfungsi untuk saya

brew postgresql-upgrade-database

Tomer G
sumber
👍✅⭐️🙏Terima kasih, Tomer! Ini bekerja untuk saya 6/2/20 meningkatkan dari 9,4 menjadi 12 di macOS Mojave 10.14.6
Rob Bednark
19
brew services start postgres 

bekerja untukku!

rld
sumber
17

Periksa apakah file soket ada.

$ ls -l /tmp/.s.PGSQL.5432
srwxrwxrwx  1 you  wheel  0 Nov 16 09:22 /tmp/.s.PGSQL.5432

Jika tidak maka periksa postgresql.conf Anda untuk perubahan unix_socket_directory.

$ grep unix_socket /usr/local/var/postgres/postgresql.conf
#unix_socket_directory = ''     # (change requires restart)
#unix_socket_group = ''         # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation
Jrwren
sumber
1
Ini respons komputer saya. $ ls -l /tmp/.s.PGSQL.5432 ls: /tmp/.s.PGSQL.5432: No such file or directory $ grep unix_socket /usr/local/var/postgres/postgresql.conf #unix_socket_directory = '' # (change requires restart) #unix_socket_group = '' # (change requires restart) #unix_socket_permissions = 0777 # begin with 0 to use octal notation
Gary Lai
29
Akhirnya saya menemukan solusinya. $ mkdir /var/pgsql_socket/ $ sudo mkdir /var/pgsql_socket/ $ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/Solusi ini sedikit rumit, tetapi berhasil. Semoga ada yang punya solusi yang lebih baik
Gary Lai
kerja bagus @GaryLai. Sangat aneh bahwa saya tidak perlu melakukan hal yang sama dengan postgresql homebrew saya
jrwren
2
ini mungkin membantu beberapa orang di luar sana: github.com/mxcl/homebrew/issues/14527
AdamT
14

Masalahnya juga dapat dikaitkan dengan proses macet yang meninggalkan file postmaster.pid. Saya melakukan ini dan bekerja:

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql
rld
sumber
10

Masalahnya adalah karena sudah ada layanan yang berjalan pada port 5432 dan kami tidak dapat membuat koneksi soket psql melalui port ini.

Saya menghapus file socket

rm -rf /tmp/.s.PGSQL.5432/

Kemudian saya menginisialisasi ulang layanan postgres

postgres -D /usr/local/var/postgres

Ini berhasil untuk saya.

Abdullah Gürsu
sumber
9

Cara pembuktian yang paling bodoh adalah dengan melakukannya

brew reinstall postgresql

Ini akan membuat izin pengguna Anda, dll, semuanya utuh dan semuanya diatur ulang menjadi baru. Bekerja sepanjang waktu!

attaboyabhipro
sumber
bekerja seperti jagoan !!!! Ini semua dibutuhkan.
Akash K
Ini berhasil tetapi saya sarankan jika rm /usr/local/var/postgres/postmaster.pidpada mac os tidak berfungsi maka gunakan perintah ini.
Yaseen Ahmad
7

Mengubah pengaturan konfigurasi postresql atau database.yml, mengubah $ PATH, atau membuat symlink tidak diperlukan bagi saya. Semua perlu saya lakukan adalah gem uninstall pgdan kemudian bundle(atau gem install pg).

Masalahnya adalah permata pg telah diinstal sebelum postingan homebrew, jadi mengambil pengaturan dari versi postgres yang datang dengan MacOS. Menginstal ulang (dan dengan demikian membangun kembali ekstensi asli) memperbaiki masalah.

John
sumber
Hanya ingin mengucapkan terima kasih. Saya baru saja memutakhirkan PostgresApp di macOS dan meskipun saya bisa terhubung menggunakan psql, saya tidak bisa terhubung melalui rel. mencopot dan menginstal ulang permata pg hanya tiket! :)
craig1410
7

Ini terjadi pada saya ketika saya memutakhirkan dari 9.3.4 ke 9.5 karena basis data tidak kompatibel tanpa memutakhirkan.

Saya menggunakan pg_upgrade sebagai berikut:

Hentikan postgres

$ brew services stop postgresql

Tingkatkan basis data:

$ pg_upgrade \
   -d /usr/local/var/postgres \
   -D /usr/local/var/postgres9.5 \
   -b /usr/local/Cellar/postgresql/9.3.4/bin/ \
   -B /usr/local/Cellar/postgresql/9.5.0/bin/ \
   -v

Arsipkan basis data lama:

 $ mv /usr/local/var/postgres /usr/local/var/postgres9.3.save
 $ mv /usr/local/var/postgres9.5 /usr/local/var/postgres

Mulai ulang postgres:

 $ brew services start postgresql

Permata yang Diperbarui (untuk rel / catatan aktif):

 $ gem uninstall pg
 $ gem uninstall activerecord-postgresql-adapter
 $ bundle install
stujo
sumber
Instruksi ini juga di kolektifididea.com/blog/archives/2016/01/08/... , dan masih bekerja untuk saya hari ini ketika meningkatkan dari 9.4.0 ke 9.6.3. Saya tidak perlu melakukan apa pun pada file .pid secara manual.
Jan Hettich
7

Ini sebenarnya yang seharusnya Anda lakukan:

Anda seharusnya melihat /usr/local/var/postgres/postmaster.pid

dan kemudian lihat baris pertama file - ini adalah PID yang buruk

Lari

ps aux | grep <PID>

sebagai contoh:

ps aux | grep 12345

lalu lakukan

kill <PID>

sebagai contoh

kill 12345

Dengan asumsi itu masih berjalan

/superuser/553045/fatal-lock-file-postmaster-pid-already-exists

jangan dengarkan jawaban yang diterima itu buruk dan akan merusak data Anda !!!

pengguna1596067
sumber
Terima kasih, ini berhasil untuk saya. Menghapus postmaster.pid dalam jawaban yang diterima sebenarnya tidak cukup.
Abe Petrillo
4

Opsi psql

-h hostname --host = hostname

: Menentukan nama host mesin yang menjalankan server. Jika nilai dimulai dengan garis miring, ini digunakan sebagai direktori untuk soket Unix-domain.

$ grep "port\|unix_socket" /etc/postgresql/9.1/main/postgresql.conf
port = 5433                                         # (change requires restart)
unix_socket_directory = '/var/run/postgresql'       # (change requires resta

$ netstat -nalp | grep postgres
unix  2      [ ACC ]     STREAM     LISTENING     106753   4349/postgres       /tmp/.s.PGSQL.5432
unix  2      [ ACC ]     STREAM     LISTENING     10377 1031/postgres       /var/run/postgresql/.s.PGSQL.5433

Jalankan psql dengan -host Option

$ psql -p 5433 -h /var/run/postgresql

Tidak perlu membuat tautan lunak

Juno Choo
sumber
4

Datang di masalah ini juga pada MacOS Sierra dan ketika kami menjalankan pg_ctl seperti yang dijelaskan di atas kami kemudian memiliki kesalahan berikut pg_ctl: no database directory specified and environment variable PGDATA unset. Jadi kami mengikuti langkah-langkah di sini yang memecahkan masalah kami, yaitu:

mkdir ~/.postgres

initdb ~/.postgres

pg_ctl -D ~/.postgres start

Austin
sumber
4

Jika postgres diinstal menggunakan homebrew, Anda dapat memperbaikinya dengan menjalankan:

brew link postgres
Cl Local
sumber
4

Jika Anda mematikan sistem Anda tanpa berhenti dari psql, postgres tidak akan menghapus beberapa file.

Saya tidak menemukan file postmaster.pid di lokasi usr / local / var / postgres

Jadi saya lakukan di bawah ini:

layanan minuman memulai postgresql

Perintah di atas seharusnya membuat Anda memulai postgres

Ashwin
sumber
3

Saya mengalami masalah ini setelah mencoba memulihkan / menjatuhkan / membuat db saat proses lain mengaksesnya. Perbaikan MacOSX / Homebrew adalah:

  1. menutup semua proses mengakses lainnya rails server, rails console,guard , dll ...
  2. muat / bongkar menggunakan perintah yang ditemukan di brew info postgres
  3. jalankan restore / drop / create dari sebelumnya
TomFuertes
sumber
3

FWIW ini terjadi pada saya hari ini, tetapi yang terjadi adalah saya menjalankan pembaruan Ubuntu pada saat itu, yang kemungkinan besar memperbarui Postgres. Setelah pembaruan selesai, saya dapat terhubung tanpa hambatan.

Demi kelengkapan, saya mencoba untuk mengambil catatan dari database dari konsol Rails:

development (main):0 > a = MyModel.find 73694
PG::ConnectionBad: 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"?
Ruy Diaz
sumber
3

Sepertinya psql Anda tidak berjalan. Anda harus menjalankannya sebelum terhubung. Anda dapat melakukannya menggunakan Postgres.app hanya untuk Mac OS. (Unduh dan instal aplikasi ini http://postgresapp.com ) Buka aplikasi, dan Anda memiliki server PostgreSQL yang siap dan menunggu koneksi baru. Tutup aplikasi, dan server dimatikan. Anda juga dapat menemukan info ini di sini http://www.postgresql.org/download/macosx/ . Semoga ini bisa membantu Anda.

lisyk
sumber
1
Meskipun tautan ini dapat menjawab pertanyaan, lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini dan memberikan tautan untuk referensi. Jawaban hanya tautan dapat menjadi tidak valid jika halaman tertaut berubah.
Kmeixner
Pertanyaannya secara khusus merujuk pada instalasi homebrew dan bukan instalasi Postgres.app. Meskipun jawaban ini bermanfaat, namun tidak menjawab pertanyaan. Itu akan seperti mengatakan "Gunakan MySQL sebagai gantinya."
Brian Dear
3

Itu karena server sebelumnya masih berjalan, coba tutup semuanya dan jalankan kembali aplikasi Anda.

Kamara Jōb
sumber
3

Bagi mereka yang menggunakan perintah ini dan tidak berfungsi atau file tidak ada dan menggunakan Ruby on Rails

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

Atau perintah lain dan terus gagal.

Saya memecahkan masalah ini dengan menghapus instalasi dengan Brew. Saya harus uninstall dengan brew 2 kali, karena pada uninstall pertama akan tetap ada versi postgresql lainnya, dengan uninstall kedua proses akan selesai.

Instal postgresql dengan Brew

Lalu jatuhkan, buat, dan migrasikan basis data proyek

(Jangan lupa untuk memulai server postgresql)

Esteban Echeverry
sumber
3

Saya mendapat masalah yang sama karena saya menggunakan nama pengguna Postgres yang salah dalam kode. Saya masuk ke postgres psql -d postgresdan masuk \duuntuk mengambil nama peran dan memperbaiki nama pengguna Postgres.

Jadi ketika Anda menghadapi masalah ini, Anda perlu memastikan Anda menggunakan nama pengguna, kata sandi, nama host, dan basis data Postgres yang benar ...

Semoga ini bisa membantu siapa saja

Brilliant-Duc
sumber
3

¿Apakah Anda baru saja mengubah pg_hba.conf? jika Anda baru saja memeriksa salah ketik di:

"local" hanya untuk koneksi soket domain Unix

lokal semua kata sandi

Koneksi lokal IPv4:

host semua 127.0.0.1/32 kata sandi

Koneksi lokal IPv6:

host semua semua :: 1/128 kata sandi

Terkadang kesalahan sederhana bisa membuat kita sakit kepala. Saya harap bantuan ini dan maaf jika bahasa inggris saya tidak bagus sama sekali.

Sergio Zapata
sumber
3

Ini terjadi ketika server postgres tidak berjalan. Langkah-langkah untuk menginstal Postgres dengan benar melalui Homebrew di MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Ini menginisialisasi postgres untuk menggunakan direktori yang diberikan sebagai direktori database. Biasanya tidak disarankan untuk menggunakan direktori pengguna untuk penyimpanan basis data. Edit file sudoers untuk menambahkan initdb dan perintah serupa dan kemudian jalankan initdb di / usr / local / var / postgres]

  3. pg_ctl -D /Users/<username>/db -l logfile start [Setelah mendapatkan kesuksesan dengan langkah 2 itu akan meminta untuk menjalankan langkah 3. Perintah ini secara manual memulai server.]

Souvik Das
sumber
2

Saya mendapat kesalahan yang sama. Ternyata postgres tidak berjalan sama sekali (biasanya selalu berjalan di latar belakang, tetapi untuk alasan apa pun tidak hari ini).

Jika ini masalahnya, cukup ketik postgresbaris perintah di direktori proyek Anda

Benjamin Dunphy
sumber
2

Setelah banyak bolak-balik, itu benar-benar turun ke pgversi permata yang saya gunakan. Pada maverick, pgversi 0.15.1tidak akan terhubung ke port 5432 tetapi versi 0.17.1berfungsi dengan baik - sangat aneh.

Anthony
sumber