instalação postgresql: diretório de dados initdb não está vazio?

14

Estou tentando criar o banco de dados postgresql.

Quando eu instalo o PostgreSQL, eu dei este comando:

sudo yum install postgresql postgresql-server

e mais tarde modifiquei o arquivo de configuração:

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

e 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

Enquanto estou tentando inicializar o serviço postgresql:

sudo service postgresql initdb

> Data directory is not empty!                               [FAILED]

sudo chkconfig postgresql on

sudo service postgresql start

Starting postgresql service:                               [  OK  ]

O que causou esses erros e como corrigi-los?

    
por sridhar 08.05.2013 / 10:14

4 respostas

15

O Initdb só deve ser executado uma vez. Ele irá criar o diretório onde você vai manter os arquivos de configuração e (geralmente) o banco de dados real. Você obviamente já fez isso; otherwrise não haveria nenhum pg_hba.conf para você editar.

Portanto, não execute postgresql initdb novamente, a menos que você esteja fazendo uma reinstalação completa.

    
por 08.05.2013 / 10:35
13

De aqui :

Se você estiver limpando completamente & reinstalar um banco de dados Postgres, ao executar initdb como:

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

você pode encontrar este erro de serviço:

Data directory is not empty! [FAILED]

Para consertar (e esta é a opção nuclear - todos os dados do banco de dados são apagados!)

No Amazon Linux (2014-x):

rm -rf /var/lib/pgsql9/data

No CentOS (6.x)

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

Agora, tente o comando initdb novamente e ele deve funcionar desta vez:

service postgresql-9.2 initdb

    
por 18.01.2016 / 05:02
3

Eu tive o mesmo problema, usando o PostgreSQL 9.3 no CentOS 6.

Eu apaguei a pasta /var/lib/pgsql/9.3/data e executei novamente o comando

sudo service postgresql-9.3 initdb

... que inicializou com sucesso o serviço db novamente.

    
por 12.10.2014 / 12:28
3

Em sistemas baseados em systemd, como o RHEL / CentOS 7 e o Fedora, o procedimento para executar o initdb é um pouco diferente. Isso não é mais feito pelos scripts init (que não existem mais), e o novo procedimento está muito mais próximo de as instruções upstream .

Você deve primeiro su ao usuário postgres e, em seguida, executar initdb ou pg_ctl initdb . Não é necessário fornecer um diretório de dados se você estiver usando uma construção Red Hat, já que seu padrão escolhe automaticamente o diretório de dados padrão /var/lib/pgsql .

Por exemplo:

# su - postgres
$ pg_ctl initdb
$ exit
#

Claro, você só faz isso uma vez, na primeira instalação, para configurar o diretório de dados inicial. Você não faria isso novamente a menos que estivesse criando uma instalação completamente nova ou restaurando de um desastre.

    
por 21.04.2015 / 05:03