installazione postgresql: directory di dati initdb non vuota?


17

Sto cercando di creare il database postgresql.

Quando installo PostgreSQL, ho dato questo comando:

sudo yum install postgresql postgresql-server

e successivamente ho modificato il file di configurazione:

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

e modificato come

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

Mentre sto provando ad avviare il servizio postgresql:

sudo service postgresql initdb

> Data directory is not empty!                               [FAILED]

sudo chkconfig postgresql on

sudo service postgresql start

Starting postgresql service:                               [  OK  ]

Cosa sono causati da questi errori e come posso risolverli?

Risposte:


18

Initdb dovrebbe essere eseguito una sola volta. Creerà la directory in cui manterrai i file di configurazione e (di solito) il database effettivo. Ovviamente l'hai già già fatto; altrimenti non ci sarebbe alcun pg_hba.conf da modificare.

Quindi, non eseguire di postgresql initdbnuovo, a meno che non si stia eseguendo una reinstallazione completa.


grazie per la risposta .. lo
eseguo

Voglio dire che non ci sono problemi con l'installazione, almeno non con quelli che hai mostrato. L'unica cosa che sta fallendo è fare initdb più di una volta, e ciò dovrebbe fallire: tutto il resto appare OK. Se c'è qualche altro problema, sarebbe utile se tu potessi descriverlo.
Jenny D

Grazie mille .. quindi non è un problema .. se dovessi affrontare un problema ti farò sapere ..
sridhar

15

Da qui :

Se stai cancellando e reinstallando completamente un DB Postgres, quando esegui initdbcome:

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

puoi riscontrare questo errore di servizio:

La directory dei dati non è vuota! [FAILED]

Per risolverlo (e questa è l'opzione nucleare - tutti i dati db vengono cancellati!)

Su Amazon Linux (2014-x):

rm -rf /var/lib/pgsql9/data

Su CentOS (6.x)

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

Ora prova di initdbnuovo il comando e dovrebbe funzionare questa volta:

service postgresql-9.2 initdb


4

Su sistemi basati su systemd come RHEL / CentOS 7 e Fedora la procedura per eseguire initdb è leggermente diversa. Questo non viene più fatto dagli script init (che non esistono più) e la nuova procedura è molto più vicina alle istruzioni a monte .

È necessario prima sul' postgresutente e quindi eseguire initdbo pg_ctl initdb. Non è necessario fornire una directory di dati se si utilizza una build di Red Hat in quanto l'impostazione predefinita sceglie automaticamente la directory di dati predefinita /var/lib/pgsql.

Per esempio:

# su - postgres
$ pg_ctl initdb
$ exit
#

Naturalmente, lo fai solo una volta, alla prima installazione, per impostare la directory dei dati iniziale. Non lo rifaresti a meno che tu non stia creando un'installazione completamente nuova o ripristinando da un disastro.


3

Ho avuto lo stesso problema, usando PostgreSQL 9.3 su CentOS 6.

Ho eliminato la cartella /var/lib/pgsql/9.3/data, quindi ho eseguito nuovamente il comando

sudo service postgresql-9.3 initdb

... che ha nuovamente inizializzato con successo il servizio db.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.