Erro incompleto do pacote de inicialização do Postgres

13

Estou tentando instalar o Postgres 9.3 no Ubuntu 14.04 e estou recebendo um erro irritante na inicialização. Aqui está o que estou vendo:

$ sudo service postgresql restart
* Restarting PostgreSQL 9.3 database server
* Error: could not exec /usr/lib/postgresql/9.3/bin/pg_ctl /usr/lib/postgresql/9.3/bin/pg_ctl start -D /var/lib/postgresql/9.3/main -l /var/log/postgresql/postgresql-9.3-main.log -s -o  -c config_file="/etc/postgresql/9.3/main/postgresql.conf" : [fail]

Então, verifiquei o arquivo de log com esta saída:

 2015-01-05 21:50:05 EST LOG:  database system was shut down at 2015-01-05 21:50:03 EST
 2015-01-05 21:50:05 EST LOG:  database system is ready to accept connections
 2015-01-05 21:50:05 EST LOG:  autovacuum launcher started
 2015-01-05 21:50:06 EST LOG:  incomplete startup packet
 2015-01-05 21:51:22 EST ERROR:  syntax error at or near "exit" at character 1
 2015-01-05 21:51:22 EST STATEMENT:  exit;

"Pacote de inicialização incompleto" parece ser o culpado, mas estou tendo problemas para encontrar informações sobre o que pode estar acontecendo, então pensei em perguntar. Desde já, obrigado.

andrewniesen
fonte

Respostas:

15

Existem 3 itens diferentes nesta pergunta:

  • O pacote de inicialização incompleto que ocorre no início do servidor é irrelevante; você pode ignorá-lo. Leia a ajuda incompleta do pacote de inicialização necessária (na lista de discussão geral pgsql) para obter mais informações.

  • erro de sintaxe na saída ou perto de "exit" no caractere 1 significa que um cliente emitiu exitcomo se fosse uma instrução SQL.

  • O erro não pôde ser executado ao emitir service postgresql restartparece um sério problema de instalação, mas é contradito pela entrada do log, database system is ready to accept connectionso que significa que o servidor foi iniciado corretamente.

Daniel Vérité
fonte
Sua resposta "parece um sério problema de instalação" me levou a fazer mais algumas pesquisas sobre como excluir completamente o Postgres e reinstalá-lo. Encontrei este artigo que foi útil para remover todos os rastreamentos do Postgres antes da reinstalação e funcionou muito bem.
precisa saber é o seguinte
8
uma das possíveis causas de "Pacote de inicialização incompleto" é quando uma conexão TCP é estabelecida na porta 5432 do postgresql e a imediatamente fechada. Isso pode acontecer quando um programa de monitoramento é configurado para verificar a porta, mas não para executar um comando SQL.
Tom H
Bem visto @TomH, isso me mordeu hoje. Existe outra maneira de verificar se o banco de dados está aceitando conexões? O MySQL temmysqladmin --wait=30 ping
Yarek T
1
@YarekT: pg_isready - verifica o status da conexão de um servidor PostgreSQL
Daniel Vérité
-1

Talvez o seu iptables esteja descartando pacotes na porta 5432.
Considere adicionar a seguinte regra ao seu iptables:

# sudo iptables -A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT
Sadads Dadssa
fonte