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.