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.