Postgres不完整的启动包错误


13

我正在尝试在Ubuntu 14.04上安装Postgres 9.3,并且在启动时遇到一个令人讨厌的错误。这是我所看到的:

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

因此,我使用以下输出检查了日志文件:

 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;

可能是“启动包不完整”的罪魁祸首,但是我很难找到可能发生的情况的信息,所以我想问一下。提前致谢。

Answers:


15

这个问题有3个不同的项目:

  • 服务器启动时发生的不完整启动包是无关紧要的,您可以忽略它。阅读需要的不完整的启动包帮助(在pgsql-general mailing-list中)以获取更多信息。

  • 字符1处“退出”处或附近的语法错误表示客户端发出的exit好像是SQL语句。

  • 不能EXEC发行时的错误service postgresql restart看起来像一个严重的安装问题,但它是由日志条目矛盾database system is ready to accept connections意味着服务器启动就好了。


您的回答“看起来像一个严重的安装问题”促使我对如何完全删除Postgres并重新安装进行了更多研究。我发现本文对重新安装Postgres之前的所有痕迹很有帮助,并且效果很好。
andrewniesen 2015年

8
“不完整的启动数据包”的可能原因之一是与PostgreSQL端口5432的TCP连接建立后,立即关闭了。当将监视程序配置为检查端口而不运行SQL命令时,可能会发生这种情况。
汤姆H,

很好地发现了@TomH,今天对我有点困扰。还有其他方法可以检查数据库是否正在接受连接?MySQL有mysqladmin --wait=30 ping
Yarek T

1
@YarekT:pg_isready -检查PostgreSQL服务器的连接状态
丹尼尔·维泰

-1

也许您的iptables在端口5432上丢弃了软件包。
请考虑向iptables添加以下规则:

# sudo iptables -A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.