"/Var/pgsql_socket/.s.PGSQL.5432" Soket Dosyası Mountain Lion'da Eksik (OS X Sunucusu)


95

OS X Server kullanarak MacMini Sunucumu Lion Server'dan Mountain Lion'a yükselttim. Geçen yıl Lion Server'ı ilk kurduğumda yaşadığım problemin aynısını PostgreSQL ile yaşıyorum.

Herhangi bir PostgreSQL terminal komutunu yapmaya çalıştığımda, birçok kişinin yıllar içinde aldığı şu kötü şöhretli hata mesajını alıyorum:

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

Hatayı aldığımda _postgres şifresini değiştirmeye çalışıyordum. Birkaç komut denedim ama aynı hatayı aldım. Sunucumu yeniden başlattım ama şansım yok. / Var / pgsql_socket'e bakmak için root olarak oturum açtım ve klasör boş. / Var / pgsql_socket_alt klasörü de boş.

İnternette bununla ilgili kontrol ettim. Bununla birlikte, Stack Overflow dahil olmak üzere okuduğum tüm çözümler, PostgreSQL'in kaldırılmasını ve yeniden kurulmasını öneriyor. Bilmiyorum ama bu mantıklı bir seçenek gibi görünmüyor çünkü Sunucu Uygulamasındaki birçok seçenek PostgreSQL kullanıyor. Apple Kurumsal Destek ile iletişime geçtim (anlaşma yok) ve sorunumun 695 dolara mal olacak geliştiriciler tarafından çözülmesi gerektiği söylendi.

Şu anda kapalı olan bir web sitem var çünkü onu yeniden inşa edemiyorum. Bu noktada yardım için nereye başvuracağımı bilmiyorum. Bir şey bulabilir miyim diye çevrimiçi bakmaya devam edeceğim. Ancak, veritabanımı yeniden oluşturabilmem için birinin bana hızlı bir şekilde yanıt vermesini umuyorum.

Güncelleme: 12/13/2012 15:33 GMT-6

İşte ps auwx | grep postg için çıktım:

_postgres      28123   0.0  0.1  2479696   7724   ??  Ss    3:01PM   0:00.04 /Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D /Library/Server/PostgreSQL For Server Services/Data -c listen_addresses= -c log_connections=on -c log_directory=/Library/Logs/PostgreSQL -c log_filename=PostgreSQL_Server_Services.log -c log_line_prefix=%t  -c log_lock_waits=on -c log_statement=ddl -c logging_collector=on -c unix_socket_directory=/Library/Server/PostgreSQL For Server Services/Socket -c unix_socket_group=_postgres -c unix_socket_permissions=0770
server1        28216   0.0  0.0  2432768    620 s000  R+    3:02PM   0:00.00 grep postg
_postgres      28138   0.0  0.0  2439388    752   ??  Ss    3:01PM   0:00.01 postgres: stats collector process                           
_postgres      28137   0.0  0.0  2479828   1968   ??  Ss    3:01PM   0:00.00 postgres: autovacuum launcher process                           
_postgres      28136   0.0  0.0  2479696    544   ??  Ss    3:01PM   0:00.00 postgres: wal writer process                           
_postgres      28135   0.0  0.0  2479696    732   ??  Ss    3:01PM   0:00.01 postgres: writer process                           
_postgres      28134   0.0  0.0  2479696    592   ??  Ss    3:01PM   0:00.00 postgres: checkpointer process                           
_postgres      28131   0.0  0.0  2439388    368   ??  Ss    3:01PM   0:00.00 postgres: logger process 

Güncelleme: 12/13/2012 18:10 GMT-6

Yoğun web aramasından sonra bu video bulundu. PostgreSQL'i çalıştırabildim ve hatayı kaldırabildim. Pgadmin ve phppgadmin kullanarak bağlanabiliyorum. Tam bir hayal kırıklığı yüzünden Lion Server'a geri dönmek üzereydim. Şimdi zorunda kalmayacağım.

http://www.youtube.com/watch?v=y1c7WFMMkZ4


22
Sorununuz PostgreSQL en Mac OS X önceden yüklenmiş sürümü gerçeğine aşağı kaynar psqlAşağıdaki yerlerde de olduğu PATHyüklü sürümü önce. Unix soketini farklı yerlerde ararlar. Ya belirterek tcp / ip kullanın -h localhostya da tercihen düzeltin, PATHböylece doğru psqlolan ilk bulunur. Apple'ın sadece PostgreSQL'i paketlemekle kalmayıp aynı zamanda işleri standart olmayan yerlere koyması yönündeki tuhaf kararı bu sorunun temel nedenidir.
Craig Ringer

3
OSX'te paketleyicilerin unix alan soketini normalden farklı bir yere koymaya karar verdikleri devam eden bir sorun var.
Aramama

.Bashrc dosyasında eski bir PATH kopyaladım. PostgreSQL'in başka bir sürümünü yüklemedim. İşte RVM kodunu içeren PATH ifadem. Biri bana neyi değiştireceğimi söylerse, bunu yaparım. Hangi psql'yi yaptığımda / usr / bin / psql'de bulunur. Yardımlarınız için hepinize çok teşekkürler. PATH = "$ PATH: $ HOME / .rvm / bin: / usr / bin / psql: / usr / local: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin" Ayrıca root olarak oturum açtığımda soket dosyasını arıyorum.
Pamela Cook - LightBe Corp

1
Kullananlar için homebrewve osx@CraigRinger ile sen, onaylamak için doğru cevabı olabilir brew doctor.
Karthik T

Yanıtlar:


301

Hatayı önlemek için .bash_profile dosyama aşağıdakileri ekleyebildim:

export PGHOST=localhost

Bu işe yarıyor çünkü :

Ana bilgisayar adını atlarsanız, psql, yerel ana bilgisayardaki bir sunucuya bir Unix etki alanı soketi aracılığıyla veya Unix etki alanı soketleri olmayan makinelerdeki yerel ana bilgisayara TCP / IP aracılığıyla bağlanacaktır.

İşletim sisteminiz Unix etki alanı soketlerini destekliyor, ancak PostgreSQL'in psqlihtiyaç duyduğu Unix soketi mevcut değil veya beklediğinden farklı bir konumda.

TCP / IP'yi kullanmaya localhostzorlayan bir ana bilgisayar adını açıkça belirtme psql. Bir ortam değişkeni ayarlamak PGHOST, bunu başarmanın yollarından biridir. Psql'nin kılavuzunda belgelenmiştir .


37
Bununla bir Rails uygulamasıyla karşılaşan herkes için: ana bilgisayarı database.yml içinde belirtebilirsiniz.
dwhalen

12
Bu ne tür bir büyü? Gerçekten diyorum. Açıklar mısın
Sreejith Ramakrishnan

1
Ben her zaman bu cevaba dönüyorum! Yine hayatımı kurtardım. Bu pasaj gerçekten bu sayfaya, postgresapp.com/documentation/cli-tools.html'ye aittir .
sambecker

1
Neden bilmiyorum ama benim için çalışıyor! Bu sorunu raylar 5'te 'rails db: create' kullandığımda karşılaştım, ancak zaten host: localhostdatabase.yml'de ayarladım . @dwhalen
Spark.Bao

1
Bu database.yml, Postgres'i Homebrew tarafından yönetilen eski bir sürüme indirdikten sonra bu hata göründüğünde, Rails 5.2 için değişiklik yapılmadan çalıştı .
SexxLuthor

37

Bunu konsola yapıştırmayı deneyin:

$ mkdir /var/pgsql_socket/ 

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

Sonunda bu cevabı aldım.
Abs

İyi. Bunun neden işe yaradığını bildiğimi düşünmeme rağmen, biraz daha açıklama faydalı olacaktır. Bu çözüm kabul edilen cevaptan daha iyidir, sadece detaylar eksiktir.
Glutexo

23

PostgreSQL ana bilgisayar adresini boş bırakmak yerine 127.0.0.1 doldurarak çözebildim. (Django Örneği)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'database_name',
        'USER': 'database_user',
        'PASSWORD': 'pass',
        'HOST': '127.0.0.1',
        'PORT': '',
        }
}

1
Şimdi kendimi aptal gibi hissediyorum, bu sorunu yaklaşık 2 gündür çözmeye çalışıyorum. Windows'ta '127.0.0.1' kullanıyordum, ancak daha sonra kodumu üretime (Debian 7) taşıdım ve '' olarak değiştirmek zorunda kaldım. Sorunun başka bir yerde olabileceğine inanmasına neden olan böyle bir hata mesajı vermeleri biraz tuhaf.
fang_dejavu

10

En sevdiğiniz düzenleyicide 'postgresql.conf'u açın. 'Unix_socket_directories' değişkenini arayın, büyük olasılıkla şöyle görünecektir:

unix_socket_directories = '/private/tmp/'

Satırı şu şekilde değiştirin:

unix_socket_directories = '/var/pgsql_socket/'

Birden fazla dizindeki soket dosyalarını virgülle ayırmak istiyorsanız not alın.


Bu, soketi başka bir yerde yaratmaya çalışmak gibi istenen etkiye sahipti, ancak sunucu / var dizininde dosya oluşturma iznine sahip olmadığı için başlamadı. Konfigürasyon dosyalarını daha yüksek bir seviyede değiştirerek basitçe orijinal olduğu soketi kullanmak zorunda kaldım. Bu cevapta verildiği gibi stackoverflow.com/a/29511357/1535177 .
Eosis


7

Yorumlarda başkaları tarafından da belirtildiği gibi, bu sorunun gerçekten basit bir çözümü, veritabanı konfigürasyonu içinde veritabanı 'ana bilgisayarını' bildirmektir. Bu cevabı sadece bunu okuyan herkes için biraz daha açık hale getirmek için eklemek.

Örneğin Ruby on Rails uygulamasında, /config/database.yml dosyasını düzenleyin:

development:
  adapter: postgresql
  encoding: unicode
  database: database_name
  pool: 5
  host: localhost

Not: ana bilgisayarı belirtmek için eklenen son satır. Yosemite'e güncellemeden önce, ana bilgisayarı bu şekilde belirtmeye hiç gerek duymadım.

Umarım bu birine yardımcı olur.

Şerefe


Ana makinemi, .s.PGSQL.5432dosyanın bulunduğu dizine ayarlamam gerekiyordu .
Eosis

5

Veritabanının durumunu kontrol edin:

service postgresql status

Veritabanı çalışmıyorsa, db'yi başlatın:

sudo service postgresql start

yukarıdaki hataya takılıp db'yi başlatarak çözdü.
Sivakumar RJ

4

Postgresql.conf dosyanızı kontrol edebilir misiniz?

Postgres'iniz hangi bağlantı noktasında çalışıyor?

5432 numaralı bağlantı noktasında çalışmadığını düşünüyorum. 5432 olarak değiştirilmezse

VEYA terminal kullanımda

psql -U  postgres -p YOUR_PORT_NUMBER database_name

1
Terminal komutunu çalıştıramıyorum. Ben de aynı hatayı alıyorum. Postgresql.conf dosyasını nerede bulabileceğim konusunda yardıma ihtiyacım var. Lion Server'ı çalıştırırken bir / var / pgsql klasörüm vardı. Sanırım artık gitti. Ps grep komutu için çıktımı gönderdim. PostgreSQL'i çalıştırmak için Wiki hizmetini açtım. Herhangi bir Sunucu uygulama servisini açmadan sudo serveradmin komutlarını kullanabileceğim söylendi, ancak çalışmıyorlar. Şu anda root olarak giriş yaptım, bu yüzden herhangi bir şey yapabilmeliyim :) Ağ İzlencesi'ndeki portları kontrol ettim. 5432 kullanılmıyor.
Pamela Cook - LightBe Corp

2

Django ile bu sorunu yaşadım.

Ana bilgisayar adınızı açıkça "localhost" olarak ayarlayarak sorunu düzeltin.


2

Bunu yaparak kelimede yapıyorum:

dpkg-reconfigure locales

ve tercih ettiğiniz yerel ayarları seçin

pg_createcluster 9.5 main --start

(9.5 benim postgresql sürümüm)

/etc/init.d/postgresql start

ve sonra kelime!

sudo su - postgres
psql


1
apt-get install postgres-xc-client
apt-get install postgres-xc

1
psql: 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"?

Yukarıdaki hatayı almaya devam ettim ve yukarıdaki çözümlerden hiçbiri benim için işe yaramadı. Sonunda aşağıdaki çözüm sorunumu Mac OS X'te çözdü

Brew kullanarak postgres yükleyin

brew install postgres

Demleme hizmetlerini yükleyin

brew tap homebrew/services

Postgres'i arka plan hizmeti olarak başlatmak için

brew services start postgresql

Gönderileri manuel olarak durdurmak için

brew services stop postgresql

Postgres'i yeniden başlatmak için brew hizmetlerini de kullanabiliriz

brew services restart postgresql

1

postgres sunucusunun aşağıdaki kodla çalışıp çalışmadığını kontrol edin

sudo service postgresql status

postgres sunucusu etkin değilse aşağıdaki komutu yazın.

sudo service postgresql start

1

Bilgisayarım donup kendi kendine yeniden başlatıldıktan sonra bu hatayı aldım. Benim için çözüm bu sayfada değil , aynı hata psql ile çok yüksek puan alan başka bir SO sorusunda bulunamadı: sunucuya bağlanılamadı: Böyle bir dosya veya dizin yok (Mac OS X) . Cevap: Sadece bu dosyayı silin /usr/local/var/postgres/postmaster.pid, sonra brew services restart postgresqlhile yapın. Bunu yapmadan önce postgres işlemlerini sonlandırmayla ilgili bağlantılı yanıttaki uyarıyı dikkate alın, aksi takdirde db'nizi kalıcı olarak bozabilirsiniz.


1

RubyOnRails uygulaması localhost için, özel Postgresql sürümü kullanıyorsanız ekleyin

# config/database.yml
default: &default
  host: localhost

Bu, unix soketinden ağ soketine geçmek için bir çözümdür. Daha iyi bir çözüm recompile postrgres mücevher olacaktır pg : ne olursa olsun değişim yükseltmek veya bağlı postrgesql değişiklikleri eşleşecekgep pristine pg
Fa11enAngel

0

Dosya izinleri, Mac OS'nin sahip olduğu Postgres db'de kısıtlayıcıdır. Bu izinler, Postgres yeniden başlatıldıktan veya yeniden başlatıldıktan sonra sıfırlanır: örneğin, serveradmin postgres başlat.

Bu nedenle, izinleri veya sahipliği geçici olarak sıfırlayın:

sudo chmod o+rwx /var/pgsql_socket/.s.PGSQL.5432
sudo chown "webUser"  /var/pgsql_socket/.s.PGSQL.5432

İzinlerin sıfırlanması güvenli değildir, bu nedenle bir çözüm için sahip olduğunuz bir db sürümünü yükleyin.


0

Biraz zaman aldı ama nihayet sunulan önerileri ve yapılan ek web aramalarını gözden geçirdikten sonra bunu çalıştırmayı başardım. Mactasia tarafından oluşturulan aşağıdaki YouTube videosundaki bilgileri kullandım:

http://www.youtube.com/watch?v=y1c7WFMMkZ4

Bunu yaptığımda .lock uzantılı dosyayı uzantı olarak gördüm. Ancak, PostgreSQL kullanarak Rails uygulamam üzerinde çalışmaya devam ettiğimde Rails Sunucusunu başlatmaya çalıştığımda hala hatayı alıyorum. Bu sefer izin verilmedi hatası aldım. Bu, yalnızca plist'teki listen_addresses'i değiştirmek zorunda kalmadığımı, aynı zamanda unit_socket_permissions'i 0777 olarak değiştirmem gerektiğini hatırladığım zamandı. Kullanıcı seviyesi. Postgres artık iyi çalışıyor. Verilerimi SQL yedeğimden yeniden yükleme sürecindeyim.

Anlayamadığım şey, PostgreSQL'de wiki'yi açtığımda, bir sudo serveradmin fullstatus postgres yaptığımda sözde çalışıyordu ama yine de hatayı alıyorum. Oh iyi.


0

Yeni bir küme oluşturdum ve bu benim için çalıştı, kullanıyordum (PostgreSQL) 9.3.20:

sudo pg_createcluster 9.3 main --start

0

Önce yüklü postaları kaldırın:

sudo apt-get purge postgr*
sudo apt-get autoremove

Ardından "sinaptik" i kurun:

sudo apt-get install synaptic
sudo apt-get update

Ardından Postgres'i yükleyin

sudo apt-get install postgresql postgresql-contrib
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.