Error de paquete de inicio incompleto de Postgres

13

Estoy intentando instalar Postgres 9.3 en Ubuntu 14.04 y obtengo un error molesto al inicio. Esto es lo que estoy viendo:

$ 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]

Así que verifiqué el archivo de registro con esta salida:

 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;

"El paquete de inicio incompleto" parece ser el culpable, pero tengo problemas para encontrar información sobre lo que podría estar sucediendo, así que pensé en preguntar. Gracias por adelantado.

andrewniesen
fuente

Respuestas:

15

Hay 3 elementos diferentes en esta pregunta:

  • El paquete de inicio incompleto que se produce al iniciar el servidor es intrascendente, puede ignorarlo. Lea la ayuda incompleta del paquete de inicio necesaria (en pgsql-general mailing-list) para obtener más información.

  • error de sintaxis en o cerca de "salir" en el carácter 1 significa que un cliente emitió exitcomo si fuera una instrucción SQL.

  • El error no se pudo ejecutar al emitir service postgresql restartparece un problema grave de instalación, pero la entrada de registro lo contradice, database system is ready to accept connectionslo que significa que el servidor se inició correctamente.

Daniel Vérité
fuente
Su respuesta "parece un problema grave de instalación" me llevó a investigar un poco más sobre cómo eliminar completamente Postgres y reinstalarlo. Encontré este artículo que fue útil para eliminar todo rastro de Postgres antes de la reinstalación y funcionó muy bien.
andrewniesen
8
Una de las posibles causas del "paquete de inicio incompleto" es cuando se realiza una conexión TCP al puerto postgresql 5432 y se cierra inmediatamente. Esto puede suceder cuando un programa de monitoreo está configurado para verificar el puerto, pero no para ejecutar un comando SQL.
Tom H
Muy bien visto @TomH, eso me mordió hoy. ¿Hay alguna otra forma de verificar que la base de datos acepte conexiones? MySQL tienemysqladmin --wait=30 ping
Yarek T
1
@YarekT: pg_isready - verifique el estado de conexión de un servidor PostgreSQL
Daniel Vérité
-1

Tal vez sus iptables estén soltando paquetes en el puerto 5432.
Considere agregar la siguiente regla a sus iptables:

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