instalación postgresql: ¿el directorio de datos initdb no está vacío?


17

Estoy tratando de crear la base de datos postgresql.

Cuando instalo PostgreSQL, le di este comando:

sudo yum install postgresql postgresql-server

y luego modifiqué el archivo de configuración:

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

y modificado como

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

Mientras intento iniciar el servicio postgresql:

sudo service postgresql initdb

> Data directory is not empty!                               [FAILED]

sudo chkconfig postgresql on

sudo service postgresql start

Starting postgresql service:                               [  OK  ]

¿Qué causa estos errores y cómo los soluciono?

Respuestas:


18

Initdb solo debe ejecutarse una vez. Creará el directorio donde guardará los archivos de configuración y (generalmente) la base de datos real. Obviamente ya lo has hecho; De lo contrario, no habría ningún pg_hba.conf para editar.

Por lo tanto, simplemente no postgresql initdbvuelva a ejecutar , a menos que esté haciendo una reinstalación completa.


gracias por la respuesta ... lo ejecuto dos veces ... quieres decir que no es el problema en la instalación ...
— sridhar

Quiero decir que no hay ningún problema con su instalación, al menos ninguno que haya mostrado. Lo único que falla es hacer initdb más de una vez, y eso debería fallar; todo lo demás se muestra como correcto. Si hay algún otro problema, ayudaría si pudiera describirlo.
— Jenny D

Muchas gracias .. entonces no es un problema .. si me enfrento a un problema que dejaré saber ..
— sridhar

15

Desde aquí :

Si está limpiando y reinstalando completamente una base de datos de Postgres, cuando se ejecuta initdbcomo:

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

puede encontrar este error de servicio:

¡El directorio de datos no está vacío! [HA FALLADO]

Para solucionarlo (y esta es la opción nuclear, ¡se borran todos los datos de db!)

En Amazon Linux (2014-x):

rm -rf /var/lib/pgsql9/data

En CentOS (6.x)

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

Ahora intente el initdbcomando nuevamente y debería funcionar esta vez:

service postgresql-9.2 initdb


4

En sistemas basados ​​en systemd como RHEL / CentOS 7 y Fedora, el procedimiento para ejecutar initdb es algo diferente. Esto ya no lo hacen los scripts de inicio (que ya no existen), y el nuevo procedimiento está mucho más cerca de las instrucciones ascendentes .

Primero debe dirigirse sual postgresusuario y luego ejecutar initdbo pg_ctl initdb. No es necesario proporcionar un directorio de datos si está utilizando una compilación de Red Hat, ya que su valor predeterminado elige automáticamente el directorio de datos predeterminado /var/lib/pgsql.

Por ejemplo:

# su - postgres
$ pg_ctl initdb
$ exit
#

Por supuesto, solo hace esto una vez, en la primera instalación, para configurar el directorio de datos inicial. No lo volvería a hacer a menos que estuviera creando una instalación completamente nueva o restaurando desde un desastre.


3

Tuve el mismo problema, usando PostgreSQL 9.3 en CentOS 6.

Eliminé la carpeta /var/lib/pgsql/9.3/data, luego volví a ejecutar el comando

sudo service postgresql-9.3 initdb

... que inicializó con éxito el servicio db nuevamente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.