Impossível iniciar o posgtresql, o motivo não está claro

4

Eu instalei o postgresql por pacman. Agora estou tentando executá-lo:

    $ sudo systemctl start postgresql
    Job for postgresql.service failed because the control process exited with error code.
    See "systemctl status postgresql.service" and "journalctl -xe" for details.

E então:

    $ sudo systemctl status postgresql
    ● postgresql.service - PostgreSQL database server
       Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
       Active: failed (Result: exit-code) since Sun 2016-07-10 15:30:47 UTC; 17s ago
      Process: 19468 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGROOT}/data (code=exited, status=1/FAILURE)

    Jul 10 15:30:47 my_comp systemd[1]: Starting PostgreSQL database server...
    Jul 10 15:30:47 my_comp systemd[1]: postgresql.service: Control process exited, code=exited status=1
    Jul 10 15:30:47 my_comp systemd[1]: Failed to start PostgreSQL database server.
    Jul 10 15:30:47 my_comp systemd[1]: postgresql.service: Unit entered failed state.
    Jul 10 15:30:47 my_comp systemd[1]: postgresql.service: Failed with result 'exit-code'.

O que há de errado com isso?

    
por Matudi 10.07.2016 / 09:35

3 respostas

6

A seguir, a etapa resolveu seu problema

passo 1: crie o diretório de dados (de acordo com a variável PGROOT definida antes no arquivo de configuração)

sudo mkdir /var/lib/postgres/data

Etapa 2: defina / var / lib / postgres / data ownership para o usuário 'postgres'

chown postgres /var/lib/postgres/data

Etapa 3: Como o usuário 'postgres' inicia o banco de dados.

sudo -i -u postgres
initdb  -D '/var/lib/postgres/data'

Etapa 4: inicie o serviço como raiz

    
por 26.04.2017 / 06:05
0

O registro que você compartilhou inclui esta linha:

/usr/bin/postgresql-check-db-dir ${PGROOT}/data (code=exited, status=1/FAILURE)

O que é $PGROOT definido como? O $PGROOT/data existe? Esse diretório tem algum arquivo init? Caso contrário, talvez seja necessário executar initdb no diretório.

Para inicializar, crie um diretório de dados vazio como root e, em seguida, use chown para atribuir a propriedade desse diretório à conta de usuário do banco de dados e su para se tornar o usuário do banco de dados a executar initdb /path/to/data .

    
por 11.07.2016 / 17:20
0

Após definir uma senha para o usuário postgres :

$ sudo passwd postgres 

execute o seguinte comando:

$ su - postgres -c "initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data'"
    
por 27.01.2018 / 20:45