postgresql kurulumu: initdb veri dizini boş değil mi?


17

Postgresql veritabanı oluşturmaya çalışıyorum.

PostgreSQL'i kurduğumda şu komutu verdim:

sudo yum install postgresql postgresql-server

ve daha sonra yapılandırma dosyasını değiştirdim:

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

ve olarak değiştirildi

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

Ben postgresql hizmetini başlatmaya çalışırken:

sudo service postgresql initdb

> Data directory is not empty!                               [FAILED]

sudo chkconfig postgresql on

sudo service postgresql start

Starting postgresql service:                               [  OK  ]

Bu hataların nedeni nedir ve nasıl düzeltebilirim?

Yanıtlar:


18

Initdb yalnızca bir kez çalıştırılmalıdır. Yapılandırma dosyalarını ve (genellikle) asıl veritabanını saklayacağınız dizini oluşturur. Bunu zaten çoktan yaptınız; otherwrise, düzenlemek için herhangi bir pg_hba.conf olmaz.

Yani, postgresql initdbtam bir yeniden yükleme yapmazsanız, sadece tekrar çalıştırmayın .


cevap için teşekkürler .. i iki kez çalıştırmak ... demek onun kurulumda sorun değil ..
— sridhar

Yani kurulumunuzda bir sorun yok, en azından gösterdiğiniz herhangi bir sorun yok. Başarısız olan tek şey initdb'yi bir kereden fazla yapmaktır ve bu başarısız olmalıdır - diğer her şey tamam olarak gösterilir. Başka bir sorun varsa, bunu açıklayabilirseniz yardımcı olacaktır.
— Jenny D

Çok teşekkür ederim .. o zaman bu bir sorun değil .. bir sorunla karşılaşırsam size bildiririm ..
— sridhar

15

Gönderen burada :

Bir Postgres DB'yi tamamen siliyorsanız ve yeniden yüklüyorsanız, aşağıdaki initdbgibi çalışırken :

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

bu hizmet hatasıyla karşılaşabilirsiniz:

Veri dizini boş değil! [BAŞARISIZ OLDU]

Düzeltmek için (ve bu nükleer seçenek - tüm db verileri silinir!)

Amazon Linux'ta (2014-x):

rm -rf /var/lib/pgsql9/data

CentOS'ta (6.x)

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

Şimdi initdbkomutu tekrar deneyin ve bu sefer çalışması gerekir:

service postgresql-9.2 initdb


4

RHEL / CentOS 7 ve Fedora gibi sistem tabanlı sistemlerde, initdb çalıştırma prosedürü biraz farklıdır. Bu, artık (artık mevcut olmayan) init komut dosyaları tarafından yapılmamaktadır ve yeni prosedür, yukarı akış yönergelerine çok daha yakındır. .

Önce gerekir suiçin postgreskullanıcı ve sonra çalıştırıninitdb veya pg_ctl initdb. Varsayılan olarak otomatik olarak varsayılan veri dizinini seçtiği için Red Hat derlemesi kullanıyorsanız bir veri dizini sağlamanız gerekmez /var/lib/pgsql.

Örneğin:

# su - postgres
$ pg_ctl initdb
$ exit
#

Tabii ki, ilk veri dizinini ayarlamak için bunu ilk kurulumda yalnızca bir kez yaparsınız. Tamamen yeni bir kurulum oluşturmadıkça veya bir felaketten geri yüklemediyseniz tekrar yapmazsınız.


3

Ben CentOS 6 PostgreSQL 9.3 kullanarak aynı sorunu vardı.

/Var/lib/pgsql/9.3/data klasörünü sildim, ardından komutu yeniden çalıştırdım

sudo service postgresql-9.3 initdb

... başarıyla db hizmetini yeniden başlattı.

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.