PostgreSQL 9.3 neden Ubuntu'da başlamıyor?


13

PostgreSQL 9.3'ü Ubuntu 12.04 ve 13.04 çalıştıran 2 VM'de APT deposundan başarıyla yükledim ... Ancak, Ubuntu 12.04 çalıştıran ana makineme düzgün bir şekilde yüklenemiyor.

Kurulum (bu sefer) iyi gitti gibi görünüyor, ama belki de anlamadığım bir hata var:

* No PostgreSQL clusters exist; see "man pg_createcluster"
Setting up postgresql-9.3 (9.3.0-2.pgdg12.4+1) ...
Creating new cluster 9.3/main ...
  config /etc/postgresql/9.3/main
  data   /var/lib/postgresql/9.3/main
  locale en_US.UTF-8
  port   5432
update-alternatives: using /usr/share/postgresql/9.3/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode.

Bu yüzden kendimi PostgreSQL kullanıcısı olarak eklemeye çalışıyorum, ama bunu elde ediyorum:

createuser: could not connect to database postgres: 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"?

PostgreSQL'in sistem monitöründe çalıştığını göremiyorum ve / var / run / postgresql / klasöründe dosya yok ... tamamen boş.

EDIT: VM'lerde, / var / run / postgresql / adlı 9.3-main.pid adlı bir dosya var

/ Var / log / postgresql adlı ana makine günlük dosyasında hiçbir şey yok

Peki ... burada VM'imde olmayan bitenler neler? Dediğim gibi, VM'lerde PostGIS ve PGAdmin dahil olmak üzere diğer kurulumlar mükemmel geldi ... bu ana makinenin neden geçmediği hakkında hiçbir fikrim yok ...


Aslında bir /var/run/postgresqldizininiz var mı? Başarılı kurulumdan sonra bir aşamada bu klasör makinemde eksikti. Yapı hangi dizini kullanması gerektiği hakkında ne diyor?
Colin 't Hart

@ Colin'tHart Bu dizine sahibim ... ancak içinde hiçbir şey yok ... VM'lerde, 9.3-main.pid adında oluşturulmuş bir dosya var Bu yapılandırma bilgilerini nerede bulabilirim?
DPSSpatial

postgresql.confyapılandırma dizininde, yukarıdaki gibi /etc/postgresql/9.3/main. Ayrıca, günlük dosyalarına da bakmalısınız /var/log/postgresql.
Colin 't Hart

@ Colin'tHart Günlük dosyası boş ... Yapılandırma dosyası - ve sanırım peşinde olduğunuzu düşünüyorum - # external_pid_file açıkça ayarlanmadıysa, fazladan bir PID dosyası yazılmaz. external_pid_file = '/var/run/postgresql/9.3-main.pid'
DPSSpatial

Bu dizinde bir soket dosyası var mı yoksa gerçekten tamamen boş mu?
Colin 't Hart

Yanıtlar:


16

PostgreSQL kurulduğunda yerel ayarım düzgün yapılandırılmamış. Temizleme ve yeniden yükleme yardımcı olmadı. Buradaki talimatları izledim ve bu benim için hile yaptı.

Aşağıda verilen bağlantılı bilgilerin temel bölümleri:

Sorun kendini şu şekilde gösterdi:

warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
...
are supported and installed on your system.

İlki, gerçekleştirerek çözmek çok kolaydı:

#dpkg-reconfigure locales

... ve tercih edilen yerel ayarları seçmek.

Ancak bundan sonra PostgreSQL hala başlamayı reddetti. Bunun nedeni, yükleme işleminin yükleme sırasında bir küme oluşturmaya çalışmasıdır, ancak kötü yerel ayarlar nedeniyle bu yapılmamıştır. Bu yüzden şu adımı uygulayarak tekrarlamalıyız:

#pg_createcluster 9.3 main --start

(PostgreSQL'in 9.3 sürümü için)

Bu adımdan sonra PostgreSQL kusursuz bir şekilde

#/etc/init.d/postgresql start

2
Hayatımı kurtardı. Yerel ayar düzeltildiğinde bile temizleme ve yeniden yüklemenin yardımcı olmaması gerçekten berbat. Bu hayatımın 2 saatini boşa harcadı :(
Escher

Durumda pg_createclusterküme zaten ilk bırakın gerek var olduğunu söyler (bu kadar emin bir yedekleme yapmak, içinde herhangi bir veri silinir): pg_dropcluster 9.3 main.
Florian Brucker

6

Umarım bu sorunu zaten çözdünüz, ancak farklı bir kaynağa sahip gibi görünen benzer bir sorunla karşılaşıyorum ve belki de hala bir sorun yaşıyorsanız deneyimim yardımcı olacaktır.

Ubuntu 9.3 ile benim sorun soket dir geçici bir dir / run olmak ile ilgilidir. Temel olarak, init.d betiğinin başlatma eylemi sırasında yoksa / dir / rungresql dizinindeki soket dizinini oluşturması gerekir. Bu her zaman yeniden başlatmanın ardından her şeyin durumu olacak.

Ancak sorun, soket dizini yoksa başlangıç ​​eylemini çalıştırmadan önce init.d betiğinin çıkmasıdır. Bunun nedeni, pg_lsclusters'a yapılan çağrının soket yönünden başarısız olması ve bunun sonucunda başlatma eyleminin soket yönünü oluşturmasını engellemesidir.

En iyi çözümün ne olduğunu anlayamadım, ancak pg_lsclusters çağrılmadan önce soket dirünü başlangıç ​​eyleminden oluşturmak için mantığı yeniden konumlandırırsam, sunucuyu yeniden başlattıktan sonra sorunsuz bir şekilde başlatabilirim.

Başlangıç ​​eyleminin soket dizinini oluşturmayı işleyen kısmı:

# create socket directory
if [ -d /var/run/postgresql ]; then
  chmod 2775 /var/run/postgresql
else
  install -d -m 2775 -o postgres -g postgres /var/run/postgresql
  [ -x /sbin/restorecon ] && restorecon -R /var/run/postgresql || true
fi

Bunun temel nedeni benim için netleşirse bir güncelleme yayınlayacağım, çünkü bu beklenen davranış olamaz.

EK:

Bu sorunla çalışıyorum nedeni unix_socket_directories için yapılandırılmış iyi bir değere sahip olmadığı için düşünüyorum . 9.2'de bu yapılandırma seçeneği, unix_socket_directories yerine geçmek yerine kaldırdığım unix_socket_directory idi. Unix_socket_directories için bir değer ayarladığım için, sunucunun başlatılmasıyla ilgili herhangi bir sorun yaşamadım.


teşekkür ederim @ tdg5 !!! Bunu çözmedim, ancak bence makineme birkaç kötü kurulum geliyor. Yeni bir ubuntu kurulumu üzerine PostgreSQL Apt Deposundan kurulum sorunlarımı çözdü ...
DPSSpatial

3
@mapBaker - Yanıtımı, özel durumuma PG 9.3 başlatma sorununun temel nedenini içerecek şekilde güncelledim. Belki de sizin için yararlı olacaktır.
tdg5

1
PG9.3'üm yeniden başlatıldıktan sonra başlamadı. 9.3'ün postgresql.conf dosyasına "unix_socket_directories = '/ var / run / postgresql'" satırının eklenmesi sorunu çözdü. Teşekkürler
alfonx

Teşekkürler! Bir süredir bunun üzerinde çalışıyorum, bu külçeyi bulduğum için memnunum!
Serban Tanasa

3

Sizin durumunuzda /var/run/postgresql/.s.PGSQL.5432 durumunda, soketler dosyasıyla ilgili birkaç sorun yaşadım

/ var / run / postgresql dizininin var olduğundan ve yazılabilir olduğundan emin olun postgresql başlamadan önce daha fazla bilgi için bu tartışmaya bakın .

ayrıca, -h işaretini kullanırken:

psql -h localhost 

ve çözüp çözmediğine bakın.


1

Bu, Ubuntu'daki sorunu çözüyor gibi görünüyor:

Postgresql.conf dosyasını düzenle:

unix_socket_directories='/var/run/postgresql

Şimdi yap service postgresql start


1

PSQL'de yeniyim ancak start.conf dosyasını düzenleyerek sorunu çözdüm Sunucuyu elle yönetmek için "otomatik" ayarını yorumlamıştım, ancak bir değere ihtiyacı var: otomatik, manuel veya devre dışı.

EGD.


1

Benim tarafımda başlatma betiği yanlış. Yapılandırma dosyaları yüklü olan /etc/postgresql/9.3/main ama senaryo /usr/share/postgresql-common/init.d-functions içinde arıyor

for c in /etc/postgresql/"$2"/*; do 

Bu satırı şununla değiştir:

for c in /etc/postgresql/"$2"/main; do

-2

Herşey,

biraz kazmadan sonra, burada (a) çözüm buldum:

http://ubuntuforums.org/showthread.php?t=869080

Bu talimatları içeren:

Terminalde çalıştır:

sudo mkdir -p /usr/local/pgsql/data
sudo chown -R postgres:postgres /usr/local/pgsql/
sudo su - postgres
cd /usr/lib/postgresql/9.3/bin/
./initdb -D /usr/local/pgsql/data
./postgres -D /usr/local/pgsql/data

Şimdi sunucum çalışıyor ve çalışıyor !!!

EDIT : yeniden başlattıktan sonra sunucu hala çalışmıyor ...

Neden bu çalıştırmak için gerekli herhangi bir düşünce için teşekkür ederiz!


9.3'ün çalıştığından emin misiniz? Sürüm numarası şüpheli görünüyor ...
dezso

@dezso Bu komutlara yapıştırdığımda # sürümünü değiştirmeyi unuttum ... hepsi
v9.3'te

Bağlantı noktasını belirtmeniz gerekebilir. Varsayılan bağlantı noktası eski postgres yüklemeniz tarafından kullanılıyor. Yeni yüklemeniz büyük olasılıkla 5433 numaralı bağlantı noktasını kullanıyor, ancak bu postgresql yapılandırma dosyasını okuyarak kontrol edebileceğiniz bir şey:/etc/postgresql/9.3/main/postgresql.conf
user35581

1
Bu geçici bir çözüm olabilir ama iyi bir çözüm olmayabilir. Bu gibi bir sorun dba.stackexchange.com/a/91511/8099
sorin
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.