Mengapa PostgreSQL 9.3 tidak akan mulai di Ubuntu?

13

Saya telah berhasil menginstal PostgreSQL 9.3 dari repositori APT pada 2 VM yang menjalankan Ubuntu 12.04 dan 13.04 ... namun, saya tidak bisa menginstalnya dengan benar di mesin host saya yang menjalankan Ubuntu 12.04.

Instalasi (kali ini) tampaknya sudah ok, tapi mungkin ada kesalahan yang saya tidak mengerti:

* 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.

Jadi saya kemudian mencoba menambahkan diri saya sebagai pengguna PostgreSQL, tetapi saya mendapatkan ini:

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

Saya tidak dapat melihat PostgreSQL berjalan di monitor sistem, dan tidak ada file di folder / var / run / postgresql / ... benar-benar kosong.

EDIT: Di VM, ada file di / var / run / postgresql / bernama 9.3-main.pid

Tidak ada apa pun pada file log mesin host yang terletak / var / log / postgresql

Jadi ... apa yang terjadi di sini yang tidak terjadi di VM saya? Seperti yang saya katakan, instalasi lain di VM, termasuk PostGIS dan PGAdmin datang dengan sempurna ... tidak tahu mengapa mesin host ini tidak melalui ...

DPSSpatial
sumber
Apakah Anda benar-benar memiliki /var/run/postgresqldirektori? Pada satu tahap setelah instalasi berhasil folder itu hilang di mesin saya. Apa yang dikatakan konfigurasi tentang direktori mana yang harus digunakan?
Colin 't Hart
@ Colin'tHart Saya memiliki direktori itu ... namun tidak ada di dalamnya ... di VM, ada file yang dibuat bernama 9.3-main.pid Di mana saya akan menemukan informasi konfigurasi?
DPSSpatial
postgresql.confdalam direktori config, yang menurut di atas, adalah /etc/postgresql/9.3/main. Anda juga harus mencari di file log, mungkin di /var/log/postgresql.
Colin 't Hart
@ Colin'tHart File log kosong ... File config - dan saya pikir inilah yang Anda cari - mengatakan # Jika external_pid_file tidak diatur secara eksplisit, tidak ada file PID tambahan yang ditulis. external_pid_file = '
/var/run/postgresql/9.3-main.pid
Apakah ada file socket di direktori itu, atau benar-benar kosong?
Colin 't Hart

Jawaban:

16

Pengaturan lokal saya tidak dikonfigurasi dengan benar ketika PostgreSQL diinstal. Membersihkan dan menginstal ulang tidak membantu. Saya mengikuti instruksi di sini dan itu berhasil bagi saya.

Bagian penting dari informasi tertaut yang direproduksi di bawah:

Masalahnya muncul dengan cara berikut:

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

Yang pertama sangat mudah diselesaikan dengan mengeksekusi:

#dpkg-reconfigure locales

... dan memilih lokal yang disukai.

Namun setelah itu PostgreSQL masih menolak untuk memulai. Ini disebabkan oleh fakta bahwa proses instalasi mencoba membuat sebuah cluster pada waktu instalasi tetapi karena lokasi yang buruk ini tidak dilakukan. Jadi kita harus mengulangi langkah ini dengan mengeksekusi:

#pg_createcluster 9.3 main --start

(Untuk versi 9.3 PostgreSQL)

Setelah langkah itu PostgreSQL dimulai dengan sempurna

#/etc/init.d/postgresql start
Marko Benko
sumber
2
Menyelamatkan hidupku. Sungguh sial bahwa membersihkan dan menginstal ulang tidak membantu bahkan ketika lokal diperbaiki. Ini menghabiskan 2 jam hidupku :(
Escher
Dalam hal pg_createclustermemberitahu Anda bahwa cluster sudah ada yang Anda butuhkan untuk menjatuhkannya pertama (ini akan menghapus data apapun di dalamnya, jadi pastikan Anda memiliki cadangan): pg_dropcluster 9.3 main.
Florian Brucker
6

Semoga Anda sudah menyelesaikan masalah ini, tetapi saya mengalami masalah serupa yang tampaknya memiliki sumber yang berbeda, dan mungkin pengalaman saya akan membantu jika Anda masih mengalami masalah.

Masalah saya dengan 9.3 di Ubuntu berkaitan dengan dir socket menjadi transient dir / run. Pada dasarnya, skrip init.d seharusnya menangani pembuatan dir socket di / run / postgresql jika tidak ada selama tindakan awal. Ini akan selalu menjadi keadaan setelah reboot.

Masalahnya adalah, bagaimanapun, bahwa skrip init.d akan keluar sebelum menjalankan tindakan mulai jika soket tidak ada. Ini karena panggilan ke pg_lsclusters akan gagal tanpa soket soket, yang pada gilirannya mencegah tindakan mulai dari pernah membuat soket soket.

Saya belum tahu apa solusi terbaik, tetapi jika saya memindahkan logika untuk membuat soket dari mulai aksi hingga sebelum panggilan ke pg_lsclusters, saya dapat memulai server setelah reboot tanpa masalah.

Berikut adalah bagian dari tindakan awal yang menangani pembuatan dir socket:

# 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

Saya akan memposting pembaruan jika akar penyebab ini menjadi jelas bagi saya, karena ini jelas bukan perilaku yang diharapkan.

TAMBAHAN:

Saya pikir alasan saya mengalami masalah ini adalah karena saya tidak memiliki nilai yang baik yang dikonfigurasi untuk unix_socket_directories . Pada 9.2 opsi konfigurasi ini dulunya adalah unix_socket_directory, yang saya hapus alih-alih beralih ke unix_socket_directories. Karena saya menetapkan nilai untuk unix_socket_directories, saya tidak punya masalah dengan permulaan server.

tdg5
sumber
terima kasih @ tdg5 !!! Saya belum menyelesaikan ini, tetapi saya pikir ini disebabkan oleh beberapa instalasi buruk pada mesin saya. Menginstal dari PostgreSQL Apt Repository pada instalasi baru ubuntu memecahkan masalah saya ...
DPSSpatial
3
@mapBaker - Saya memperbarui respons saya untuk memasukkan akar penyebab masalah startup PG 9.3 dalam situasi khusus saya. Mungkin itu akan membantu Anda juga.
tdg5
1
PG9.3 saya tidak mulai setelah reboot. Menambahkan baris "unix_socket_directories = '/ var / run / postgresql'" ke 9.3 postgresql.conf menyelesaikannya. Terima kasih
alfonx
Terima kasih! Sedang mengerjakan ini untuk sementara waktu, senang menemukan nugget ini!
Serbia Tanasa
3

Saya punya beberapa masalah dengan file sockets, dalam kasus Anda /var/run/postgresql/.s.PGSQL.5432

pastikan direktori / var / run / postgresql ada dan dapat ditulis sebelum memulai postgresql untuk info lebih lanjut lihat diskusi ini .

juga, saat menghubungkan gunakan flag -h:

psql -h localhost 

dan lihat apakah itu menyelesaikannya.

Joe Love
sumber
1

Ini sepertinya memperbaiki masalah di Ubuntu:

Edit postgresql.conf:

unix_socket_directories='/var/run/postgresql

Sekarang lakukan service postgresql start

Sorin
sumber
1

Saya baru di PSQL tapi saya menyelesaikan masalah dengan mengedit start.conf Saya telah mengomentari pengaturan "otomatis" untuk mengelola server secara manual, tetapi perlu nilai: otomatis, manual atau dinonaktifkan.

EGD.

Ernesto
sumber
1

Di sisi saya skrip start up salah. File konfigurasi dipasang di /etc/postgresql/9.3/main tetapi skrip /usr/share/postgresql-common/init.d-functions mencari di

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

Ganti baris ini dengan

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

Semua,

setelah beberapa penggalian, saya menemukan (a) solusi di sini:

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

Yang berisi instruksi ini:

Jalankan di terminal:

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

Sekarang server saya sudah aktif dan berjalan !!!

EDIT : setelah restart, server masih tidak berjalan ...

Pikiran mengapa saya perlu menjalankan ini dihargai!

DPSSpatial
sumber
Apakah Anda yakin itu 9.3 berjalan? Nomor versi tampaknya mencurigakan ...
dezso
@dezso maaf lupa untuk mengubah versi # ketika saya menempelkan perintah-perintah itu ... ini semua ada di v9.3 ...
DPSSpatial
Anda mungkin perlu menentukan porta. Port default sedang digunakan oleh instalasi postgres lama Anda. Instalasi baru Anda menggunakan port 5433 kemungkinan besar, tetapi ini adalah sesuatu yang Anda dapat memeriksa dengan membaca file konfigurasi postgresql:/etc/postgresql/9.3/main/postgresql.conf
user35581
1
Ini mungkin solusi tetapi jelas bukan solusi yang baik. Suka
sorin