instalasi postgresql: direktori data initdb tidak kosong?

17

Saya mencoba membuat database postgresql.

Ketika saya menginstal PostgreSQL, saya memberikan perintah ini:

sudo yum install postgresql postgresql-server

dan kemudian saya memodifikasi file konfigurasi:

sudo vim /var/lib/pgsql/data/pg_hba.conf

dan dimodifikasi sebagai

local   all         all                               trust
host    all         all         127.0.0.1/32          trust
host    all         all         ::1/128               trust
host    all         all         0.0.0.0/0             md5

Sementara saya mencoba memulai layanan postgresql:

sudo service postgresql initdb

> Data directory is not empty!                               [FAILED]

sudo chkconfig postgresql on

sudo service postgresql start

Starting postgresql service:                               [  OK  ]

Apa yang menyebabkan kesalahan ini dan bagaimana cara memperbaikinya?

sridhar
sumber

Jawaban:

18

Initdb seharusnya hanya dijalankan sekali. Ini akan membuat direktori tempat Anda menyimpan file config dan (biasanya) database aktual. Anda jelas sudah melakukan itu; selain itu, tidak akan ada pg_hba.conf untuk diedit.

Jadi, jangan jalankan postgresql initdblagi, kecuali jika Anda melakukan instal ulang lengkap.

Jenny D
sumber
terima kasih atas jawabannya .. saya menjalankannya dua kali ... maksud Anda bukan masalah dalam instalasi ..
sridhar
Maksud saya, tidak ada masalah dengan instalasi Anda, setidaknya tidak ada yang Anda tunjukkan. Satu-satunya hal yang gagal adalah melakukan initdb lebih dari sekali, dan itu harus gagal - semuanya terlihat OK. Jika ada masalah lain, itu akan membantu jika Anda bisa menggambarkannya.
Jenny D
Terima kasih banyak .. maka itu bukan masalah .. jika saya menghadapi masalah saya akan memberi tahu Anda ..
sridhar
15

Dari sini :

Jika Anda benar-benar menghapus & menginstal ulang Postgres DB, saat berjalan initdbseperti:

service postgresql-9.2 initdb -E 'UTF8' --pgdata="/foo/bar/"

Anda dapat menemukan kesalahan layanan ini:

Direktori data tidak kosong! [GAGAL]

Untuk memperbaikinya (dan ini adalah opsi nuklir - semua data db dihapus!)

Di Amazon Linux (2014-x):

rm -rf /var/lib/pgsql9/data

Di CentOS (6.x)

rm -rf /var/lib/pgsql/9.2/data

Sekarang coba initdbperintah ini lagi dan itu akan berfungsi saat ini:

service postgresql-9.2 initdb

sv.
sumber
4

Pada sistem berbasis sistem seperti RHEL / CentOS 7 dan Fedora, prosedur untuk menjalankan initdb agak berbeda. Ini tidak lagi dilakukan oleh skrip init (yang sudah tidak ada lagi), dan prosedur baru jauh lebih dekat dengan instruksi hulu .

Anda harus terlebih dahulu suke postgrespengguna, lalu jalankan initdbatau pg_ctl initdb. Tidak perlu menyediakan direktori data jika Anda menggunakan Red Hat build karena standarnya secara otomatis memilih direktori data default /var/lib/pgsql.

Sebagai contoh:

# su - postgres
$ pg_ctl initdb
$ exit
#

Tentu saja, Anda hanya melakukan ini sekali, pada instalasi pertama, untuk mengatur direktori data awal. Anda tidak akan melakukannya lagi kecuali Anda membuat instalasi yang benar-benar baru atau memulihkan dari bencana.

Michael Hampton
sumber
3

Saya memiliki masalah yang sama, menggunakan PostgreSQL 9.3 di CentOS 6.

Saya menghapus folder /var/lib/pgsql/9.3/data, lalu menjalankan ulang perintahnya

sudo service postgresql-9.3 initdb

... yang berhasil menginisialisasi layanan db lagi.

Analisis Fuzzy
sumber