psql: sunucuya bağlanılamadı: Böyle bir dosya veya dizin yok (Mac OS X)


247

Mac'imi yeniden başlattıktan sonra korkunç Postgres hatasını aldım:

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

Bunun nedeni, macbook'umun ilgisiz bir sorun nedeniyle tamamen donması ve güç düğmesini kullanarak sert bir yeniden başlatma yapmak zorunda olduğumun nedeni. Yeniden başlattıktan sonra bu hata nedeniyle Postgres'i başlatamadım.


1
Bir sağlık kontrolü olarak, makinenizde PG çalıştığından emin olun
Jbur43

1
Cevabı bıraktığınızda lütfen bunun neden olduğunu veya Postgres sisteminin nasıl çalıştığını açıklamaya çalışın, böylece hepimiz rastgele şeyler denemiyoruz.
Nick Res

6
brew reinstall postgresql stackoverflow.com/a/39781473/6086226 benim için çalıştı
Derk Jan Speelman

demlemek yeniden postgresql bu benim sorun çözüldü
Ajay Kumar

Yanıtlar:


422

UYARI: Eğer gerçekten postgresçalışan hiçbir işlem olmadığından emin olmadan postmaster.pid dosyasını silerseniz , veritabanınızı kalıcı olarak bozabilirsiniz . (PostgreSQL postmaster'dan çıkmışsa otomatik olarak silmelidir.).

ÇÖZÜM: Bu sorunu düzeltti - bu dosyayı sildim ve sonra her şey çalıştı!

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

-

ve işte bunun neden silinmesi gerektiğini anladım.

  1. Çalışan herhangi bir PG işlemi olup olmadığını görmek için aşağıdaki komutu kullandım. benim için hiçbiri yoktu, PG sunucusunu bile başlatamadım:

    ps auxw | grep post
  2. Yukarıdaki hata mesajında ​​bulunan .s.PGSQL.5432 dosyasını aradım. Aşağıdaki komutu kullandım:

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

    bu, tüm bilgisayarımı aradıktan sonra hiçbir şey göstermedi, bu yüzden dosya mevcut değildi, ama açıkçası psql"olmasını istedi" veya "orada olduğunu düşündüm".

  3. Sunucu günlüklerime bir göz attım ve aşağıdaki hatayı gördüm:

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

    sunucu günlüğünün sonunda şu hatayı görüyorum:

    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. Hata iletisindeki öneriden sonra, server.log ile aynı dizindeki postmaster.pid dosyasını sildim. Bu sorunu çözdü ve yeniden başlatabiliyordum.

Bu nedenle, macbook'umun donması ve yeniden başlatılmasının Postgres'in işlemlerin yeniden başlatıldıktan sonra bile hala çalıştığını düşünmesine neden olduğu görülüyor. Bu dosyanın silinmesi çözüldü. Umarım bu başkalarına yardımcı olur! Birçok insanın benzer sorunları var, ancak yanıtların çoğu dosya izinleriyle ilgiliydi, ancak benim durumumda işler farklıydı.


9
umarım bu cevap bir başkasına yardım eder ve onu onaylayan kişiye teşekkür eder. bu soruyu yinelenen olarak işaretleyen moderatör olmasına rağmen benzersiz ve kullanışlıdır. harika site ve paylaşım için burada uzmanlar için yığın taşması teşekkürler!
FireDragon

2
Sadece FWIW, postmaster.pid dosyasını silmek tehlikelidir, bunu yapmadan önce çalışan hiçbir işlem olmadığından gerçekten emin postgresolmalısınız.
Craig Ringer

21
Mükemmel cevap. Potansiyel olarak yıkıcı komuttan ziyade tüm sürecinizi yayınladığınız için teşekkürler!
dojosto

3
Kabul. Postmaster.pid ile ilgili cevap iyidir, ancak postgres'in çalışıp çalışmadığını / nerede çalıştığını bulma sürecinin her adımı paha biçilmezdir . Teşekkür ederim!
Clinton

11
Macos'taki postgres günlüğümde /usr/local/var/log/postgres.log.
ryantuck

172

Yukarıdakilerin hiçbiri benim için çalışmadı. Postgres'i şu şekilde yeniden yüklemek zorunda kaldım:

  • Demlemek ile postgresql kaldırmak: brew uninstall postgresql
  • brew doctor (burada ne varsa düzeltin)
  • brew cleanup
  • Tüm Postgres klasörlerini kaldırın:

    • rm -r /usr/local/var/postgres
    • rm -r /Users/<username>/Library/Application\ Support/Postgres
  • Demlemek ile postgresql yeniden yükleyin: brew install postgresql

  • Sunucuyu başlat: brew services start postgresql
  • Şimdi veritabanlarınızı oluşturmanız gerekir ... ( createdb)

4
Benim için çalıştı, ancak gerçek bir veritabanını kaldırmak zorunda değildi ve Uygulama Desteği'nde bir klasör yoktu. Asıl mesele, bazı demlemek elemanlarının postgres yüklerken sembolik bağlantıları kırmış olmasıydı. Onları düzeltmek ve postgres yüklemek sorunu tekrar çözdü. Teşekkürler!
Kulbi

2
Ben de brew postgresql-upgrade-database
koşana

Bunlar benim için çalıştı, ancak eski verileri silmek zorunda kalmadım.
Amal Antony

Onaylamak için: bu, tüm veritabanlarınızı siler, değil mi? brew reinstall postgresEn son Homebrew Postgres ana sürüm numarasının mevcut (kırık) olanla aynı olduğunu onaylayarak sadece bir ile başa çıkabildim .
Jacob Ford

85

MacOS kullanıyorsanız ve postgres'i homebrew üzerinden yüklediyseniz,

brew services restart postgresql

Ubuntu'daysanız, bu komutlardan biriyle yeniden başlatabilirsiniz.

sudo service postgresql restart

sudo /etc/init.d/postgresql restart

34

Belki bu ilgisizdir, ancak benzer bir hata postgreskullanarak büyük bir sürüme geçtiğinizde görünür brew; kullanarak brew info postgresqlbunu yardımcı oldu:

To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database

4
Bu benim için çalıştı Catalina 11 - 12 gidiyor
nzajt

1
Benim için de çalıştı
emptywalls

15

İşte benim yolum:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm /usr/local/var/postgres/postmaster.pid
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

1
Bu, homebrew kullanarak Postgres'in durdurulması ve başlatılması / yeniden başlatılması / yeniden yüklenmesi yapılmadığında benim için çalıştı. Teşekkürler @ smartworld-dm
Bradley

1
Bu hep geri döndüğüm ruh. Çalıştırdığımda fix-my-postgresqlbunu yürütecek bir takma ad ekleyebilirim :)
Tomas K

1
Bilgisayarımı her yeniden başlattığımda bunu neden yapmak zorunda olduğum hakkında bir fikrin var mı?
stephano

11

eğer senin postmaster.pidgitti ve sen yeniden ya da bir şey olamaz, bunu:

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

başlangıçta burada açıklandığı gibi


8

Merhaba dünya :)
Benim için en iyi ama tuhaf yol sonraki şeyleri yapmaktı.

1) postgres93.app indir veya başka bir sürümü . Bu uygulamayı / Applications / klasörüne ekleyin.

2) Dosyaya .bash_profile(ana dizinimde bulunan) bir satır (komut ekleyin :

export PATH = / Uygulamalar / Postgres93.app / İçindekiler / MacOS / bin /: $ PATH
Bu bir PATH var psqldan Postgres93.app. Konsol her başlatıldığında satır (komut) çalışır.

3) Başlatma Postgres93.appgelen /Applications/klasörü. Yerel bir sunucu başlatır (bağlantı noktası "5432" ve ana bilgisayar "localhost").

4) Tüm bu manipülasyonlardan sonra koşmaktan $ createuser -SRDP user_nameve diğer komutlardan memnun oldum ve işe yaradığını gördüm ! Postgres93.appsisteminiz her başlatıldığında çalıştırılabilir.

5) Ayrıca veritabanlarınızı grafiksel olarak görmek istiyorsanız yüklemelisiniz PG Commander.app. Postgres DB'nizi güzel veri tabloları olarak görmenin iyi bir yolu

Tabii ki, sadece yerel sunucu için yararlıdır. Bu talimatın bu sorunla karşılaşan diğerlerine yardımcı olması beni memnun edecektir.


1
Buradaki anahtar, yolunuza Postgres eklemektir (adım 2). Bu bana yardımcı oldu. Postgres'i Homebrew kullanarak yüklediyseniz, .bash_profile dosyasına aşağıdaki satırı ekleyerek yolunuza ekleyebilirsiniz: export PATH='/usr/local/Cellar/postgresql/9.4.1/bin/':$PATH- Sürüm numaranızın farklı olabileceğini unutmayın.
Tina

7

Bu problemin birçok kaynağı ve dolayısıyla birçok yanıtı vardır. Her birini yaşadım.

1) Bir çeşit çökme yaşarsanız, postuslar düzgün işlememiş olabileceğinden /usr/local/var/postgres/postmaster.pid dosyasını kaldırmak büyük olasılıkla gereklidir. Ancak hiçbir işlemin çalışmadığından emin olun.

2) Craig Ringer diğer yazılarda Apple'ın postgreSQL paketlemesinin pg gem kurulum sorunlarına yol açtığına dikkat çekti . PATH ortam değişkeninin ayarlanması bir çözümdür.

3) Başka bir çözüm, gem kaldırmak ve yeniden yüklemek. Bir demleme güncellemesi de gerekebilir.

Bu gönderiye rastlarsanız, kaynaklardan birini saptayabilirseniz, zaman kazanırsınız ...


3
Bunu gönderdiğim için memnunum. Başka bir çarpışma ve cevap oldukça hızlı bir şekilde geri alınabilir ...
Jerome

6

Benim için çözüm sadece bilgisayarımı yeniden başlattı. İlk olarak Brew hizmetleriyle yeniden başlatmayı denedim ve bu işe yaramadığında, yeniden başlatma, daha ilgili çözümlerden bazılarına bakmadan önce denemek için bir sonraki en iyi seçenek gibi görünüyordu. Her şey daha sonra olması gerektiği gibi çalıştı.


5

Burada benzer bir sorunla karşı karşıya kaldım, bu sorunu aşağıdaki gibi çözdüm.

Aslında postgres işlemi öldü, postgres durumunu görmek için aşağıdaki komutu çalıştırın

sudo /etc/init.d/postgres status

Sürecin öldüğünü söyleyecek, sadece süreci başlat

sudo /etc/init.d/postgres start

Cevabınız için teşekkür ederim, cevabınız aynı sorunu bazı değişikliklerle
çözmeme

4

Bu, Mac'im (High Sierra) donduktan sonra ve manuel olarak yeniden başlatmam gerektiğinde (güç düğmesini basılı tuttuğumda) başıma geldi. Bunu düzeltmek için tek yapmam gereken temiz bir yeniden başlatma yapmak oldu.


3

Benim sorunum Gaz Maskesi (Mac için bir ana bilgisayarları dosya yöneticisi) kullanıyordum ve kullandığım hosts dosyasında localhost için bir giriş yoktu.

Ekledim:

127.0.0.1 localhost

Ve bu benim sorunumu çözdü.


3

Neden olduğundan tam olarak emin değilim, ancak Postgres kurulumum biraz vidalandı ve bazı dosyalar OP'nin gösterdiği hataya neden olan silindi.

brew service retart postgresDüzgün mesajlar gibi komutları çalıştırabildiğim ve görebildiğim halde bu hata devam etti.

Postgres belgelerini inceledim ve dosyamın /usr/local/var/postgrestamamen boş olduğunu gördüm . Bu yüzden aşağıdakileri çalıştırdım:

initdb /usr/local/var/postgres

Bu komutla bazı konfigürasyonlar yapıldı gibi görünüyor.

Sonra benden bunu çalıştırmamı istedi:

postgres -D /usr/local/var/postgres

Ve bu bana bir postmaster.pid dosyasının zaten var olduğunu söyledi.

Sadece demlemek yeni koştum yapılandırmaları almak mümkün olacağını bilmek gerekiyordu, bu yüzden test ettim.

ls /usr/local/var/postgres

Bu bana bir postmaster.pid dosyası gösterdi. Sonra yaptım brew services stop postgresqlve postmaster.pid dosyası kayboldu. Sonra yaptımbrew services start postgresql ve VIOLA dosya yeniden belirdi.

Sonra devam ettim ve aslında sunucumu bulan uygulamamı çalıştırdım, ancak veritabanlarım gitmiş gibi görünüyor.

Her ne kadar hiç gitmeyeceklerini bilmeme rağmen - yaptığım yeni başlatma yeni bir data_area oluşturmuş olabilir ve eskisine işaret edilmiyor olabilir. Nerede olduğuna bakmak ve onu tekrar belirtmek ya da veritabanlarımı yeniden oluşturmak zorundayım.

Bu yardımcı olur umarım! Postgres belgelerini okumak bana çok yardımcı oldu. "Bunu yapıştırın!" Gibi cevapları okumaktan nefret ediyorum. çünkü ne olduğunu ve neden olduğunu bilmiyorum.


2

Bu hatanın nedenleri çoktur, bu yüzden önce günlük dosyanızı bulun ve ipuçlarını kontrol edin. Hiç de olabilir /usr/local/var/log/postgres.logya /usr/local/var/postgres/server.logda muhtemelen başka bir yerde. Homebrew ile yüklediyseniz konumu bulabilirsiniz ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist.


2

Aynı sorunu yaşadım. Çoğu zaman sorun, artık bir dosya olması

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

çoğu insan için çalışıyor, ama benim durumum farklıydı - son 3 saat boyunca bu sorunu googling denedim, demlemek yoluyla OSX'te postresql'i kaldırdım, veritabanını temizledim, hiçbir şey işe yaramadı.

Son olarak, demlemekle ilgili bir sorun yaşadığımı fark ettim, her ne zaman bir şey kurmaya çalışsam, ortaya çıktı:

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

veya bir kurulumun sonunda bunun gibi bir şey.

Sadece yaptım sudo chmod -R 777 /private/tmpve sonunda işe yarıyor!

Bunu yazıyorum çünkü bu başkası için bir çözüm olabilir


1

Git /var/log/ ve kedi koş postgres.log Burada postgres başarısızlık nedenini bulacaksınız. Akıllı bir kapatma ise, muhtemelen icu4csürümünüz (Unicode için C ++ kitaplığı) ile bağlantılı olan uygun değildir postgres. Bu yüzden aşağıdaki komutları çalıştırın.

brew upgrade brew cleanup Bu çalışmalı ;)


Homebrew'ı bozarsa brew styledaha sonra brew cleanupkoşması gerekebilir .
olliezhu

0

Bu sorunu çözmek için bu gönderiyi birkaç kez aramak zorunda kaldım. Diğer çalışan programlarla benzer sorunlar için de geçerli olacak başka bir düzeltme var.

Az önce aşağıdaki iki komutu kullanabileceğinizi keşfettim.

$ üst

Bu, şu anda çalışan tüm eylemleri pid numaraları ile gösterecektir. Postgres ve ilişkili pid'i bulduğunuzda

$ pid_number öldür


0

Ben sadece ubuntugüncelleme için makinem ( ) koydum aynı sorunu var ve aşağıdaki hata var:

sunucuya bağlanılamadı: Böyle bir dosya veya dizin yok Sunucu yerel olarak çalışıyor ve "/var/run/postgresql/.s.PGSQL.5432" Unix etki alanı soketindeki bağlantıları kabul ediyor mu?

Güncelleme işlemini tamamladıktan sonra sistemimi yeniden başlattığımda hata gitti. Ve daha önce olduğu gibi cazibesi gibi .. Sanırım bu pg güncelleme ve başka bir süreç başladı gibi oldu.


0

SÜPER NEWBIE UYARISI: Sadece web geliştirme öğreniyorum ve takip ettiğim özel öğretici Postgres yüklemem gerekiyor ama aslında da çalıştırmam gerektiğini söylemedim ... Postgres uygulamasını açtıktan sonra her şey yolunda ve züppe.


0

@Jagdish Barabari'nin cevabı bana bunu çözmek için ihtiyacım olan ipucunu verdi. Sadece biri çalışırken iki postgresql sürümü yüklü olduğu ortaya çıktı. Tüm postgresql dosyalarını temizlemek ve en son sürümü yeniden yüklemek bu sorunu benim için çözdü.


0

/ Usr / lib öğesini LD_LIBRARY_PATH ürününden kaldırdım ve işe yaradı. Dockerfile postgres: alpine çalışıyordum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.