instalacja postgresql: katalog danych initdb nie jest pusty?

17

Próbuję utworzyć bazę danych postgresql.

Kiedy instaluję PostgreSQL, wydałem polecenie:

sudo yum install postgresql postgresql-server

a później zmodyfikowałem plik konfiguracyjny:

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

i zmodyfikowany jako

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

Podczas próby uruchomienia usługi postgresql:

sudo service postgresql initdb

> Data directory is not empty!                               [FAILED]

sudo chkconfig postgresql on

sudo service postgresql start

Starting postgresql service:                               [  OK  ]

Co powoduje te błędy i jak je naprawić?

śridhar
źródło

Odpowiedzi:

18

Initdb należy uruchomić tylko raz. Stworzy katalog, w którym będziesz przechowywać pliki konfiguracyjne i (zwykle) rzeczywistą bazę danych. Oczywiście już to zrobiliście; W innym przypadku nie byłoby pg_hba.conf do edycji.

Więc nie uruchamiaj postgresql initdbponownie, chyba że przeprowadzasz pełną ponowną instalację.

Jenny D.
źródło
dzięki za odpowiedź .. uruchamiam go dwa razy ... masz na myśli, że to nie jest problem z instalacją ..
sridhar
Mam na myśli, że nie ma żadnego problemu z twoją instalacją, a przynajmniej nie tego, co pokazałeś. Jedyne, co się nie udaje, to wielokrotne uruchamianie initdb i to powinno zakończyć się niepowodzeniem - wszystko inne pokazuje się jako OK. Jeśli jest jakikolwiek inny problem, dobrze byś mógł go opisać.
Jenny D
Dziękuję bardzo .. to nie jest problem .. jeśli
napotkam
15

Od tutaj :

Jeśli całkowicie czyścisz i ponownie instalujesz bazę danych Postgres, podczas działania initdbtakiego jak:

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

możesz napotkać ten błąd usługi:

Katalog danych nie jest pusty! [AWARIA]

Aby to naprawić (i jest to opcja jądrowa - wszystkie dane bazy danych są usuwane!)

W systemie Amazon Linux (2014-x):

rm -rf /var/lib/pgsql9/data

Na CentOS (6.x)

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

Teraz spróbuj initdbponownie i polecenie powinno działać tym razem:

service postgresql-9.2 initdb

sv.
źródło
4

W systemach opartych na systemie, takich jak RHEL / CentOS 7 i Fedora, procedura uruchamiania initdb jest nieco inna. Nie jest to już wykonywane przez skrypty inicjujące (które już nie istnieją), a nowa procedura jest znacznie bliższa instrukcjom wstępnym .

Musisz najpierw sudo postgresużytkownika, a następnie uruchomić initdblub pg_ctl initdb. Podanie katalogu danych nie jest konieczne, jeśli używasz kompilacji Red Hat, ponieważ domyślnie automatycznie wybiera domyślny katalog danych /var/lib/pgsql.

Na przykład:

# su - postgres
$ pg_ctl initdb
$ exit
#

Oczywiście robisz to tylko raz, przy pierwszej instalacji, aby skonfigurować początkowy katalog danych. Nie zrobiłbyś tego ponownie, chyba że tworzysz całkowicie nową instalację lub przywracasz system po awarii.

Michael Hampton
źródło
3

Miałem ten sam problem, używając PostgreSQL 9.3 na CentOS 6.

Usunąłem folder /var/lib/pgsql/9.3/data, a następnie ponownie uruchomiłem polecenie

sudo service postgresql-9.3 initdb

... który ponownie zainicjował usługę db.

Analiza rozmyta
źródło