postgresql 9.1 raspberry pi 无法绑定 IPv4 套接字

postgresql 9.1 raspberry pi 无法绑定 IPv4 套接字

几周前,当我在运行 wheezy 的 Raspberry pi rev 1 机器上使用最新的 apt-get upgrade 启动我的 sinatra 应用程序时,我发现我的 postgresql 9.1 服务器不再运行。在我的日志中搜索我发现了以下内容:

无法绑定 IPv4 套接字:无法分配请求的地址 2015-08-17 08:32:17 CDT 提示:是否有另一个 postmaster 已在端口 5432 上运行?如果没有,请等待几秒钟后重试。2015-08-17 08:32:17 CDT 日志:无法绑定 IPv6 套接字:

通过搜索 Google 我可以报告此情况:

lsof -i 5432:TCP => 结果为空。这是否表明端口 5432 上没有其他进程在运行?我运行了 top,但找不到任何类似 postgresql 的内容。

/var/run/postgresql 中没有 pid 文件

这是此集群的 postgresql.conf 文件。我已将文件位置和连接中的注释行删除:

data_directory = '/var/lib/postgresql/9.1/main'     
hba_file = '/etc/postgresql/9.1/main/pg_hba.conf'               
ident_file = '/etc/postgresql/9.1/main/pg_ident.conf'   
external_pid_file = '/var/run/postgresql/9.1-main.pid'  
#listen_addresses = 'localhost'     # what IP address(es) to listen on;
port = 5432             # (change requires restart)
max_connections = 100           # (change requires restart)
unix_socket_directory = '/var/run/postgresql'       
ssl = true

pg_lsclusters 的输出

Version Cluster   Port Status Owner    Data directory                     Log file
9.1     main      5432 down   postgres /var/lib/postgresql/9.1/main       /var/log/postgresql/postgresql-9.1-main.log   

尝试 sudo pg_ctlcluster 9.1 main stop 产生:集群未运行。

作为实验,我将 conf 文件中的端口号从 5432 更改为 5433,看看它是否会启动。结果是相同的错误输出,因为另一个 postmaster 可能正在使用端口 5433。所以也许 pi 正在关闭所有端口?

我不确定接下来该尝试什么才能理解。显然,postgres 看到启动时还有另一个 5432 在运行,但我还找不到。我接下来应该去哪里找?谢谢,sam

答案1

这可能不是 Raspberry Pi 特有的。

您实际上已完全注释掉listen_addresses。我会尝试listen_addresses='*'将其设置为您的 DHCP 或公共 IP。然后重新启动 postgres 服务器。

http://www.cyberciti.biz/tips/postgres-allow-remote-access-tcp-connection.html

答案2

就我而言,我在 listen_addresses 值中写入了两个外部 IP 地址,如下所示:

listen_addresses='192.168.0.10,192.168.0.11'

并收到相同的错误。我理解,当只允许特定的 IP 地址时,只要 localhost 地址也在列表中,此语法就是正确的,因此像这样编写对我来说是有效的:

listen_addresses='192.168.0.10,192.168.0.11,127.0.0.1'

希望这对像我这样的人有帮助。

相关内容