2012-10-16 260 views
0

我正在使用Postgres 9.1.5。 JDBC在第一个实例中工作正常,但当我尝试再次执行时,它开始拒绝连接。例如,我使用JDBC登录到我的Web应用程序,工作正常。但是,我尝试使用连接来获取其他一些数据,这引发了一个例外:连接被拒绝。我确信我的代码没有问题,因为上次运行良好的登录JDBC也会引发异常:拒绝连接。Postgres:连接拒绝

它重新启动postgres的Windows服务后再次工作。然后,登录JDBC,获取一些数据,然后拒绝连接。我试过重新安装。我的笔记本电脑有问题吗?

另外,PGAdmin也存在同样的问题。它会运行一些查询,然后开始显示错误消息:Postgres服务已停止。 有什么我可以做的吗?请指教。 此外,如果有任何额外的信息需要,请让我知道。

+0

操作系统和PostgreSQL版本?检查PostgreSQL日志和系统日志(dmesg,/ var/log,Event Viewer,Console.app等,具体取决于您的操作系统)。 –

回答

0

很难猜到,看起来像是正常启动,但随后出现问题。在这些情况下,您的第一站应始终是日志文件。快速检查可以在配置文件(doc here)中验证max_connections,它可能预设为一个可笑的低值。如果在pgAdminIII中单击了服务器节点,您也可以在“统计信息”选项卡下看到所有打开的连接,也许在进程中出现了一些问题,从而耗尽了所有可用的连接。

确定发生什么的另一种方法是以交互方式启动postgres服务器(即,让它将其所有消息输出到您启动它的窗口中)为explained in the official documentation

另外,如果你的服务器运行在Linux上,PS可以帮助你,Postgres连接是由单个进程管理,即它们在PS单独出现:

ps ax | grep postgres: 
.... 
20528 ?  Ss  0:00 postgres: username dbname clienraddress(48679) idle 
1

可以有这种行为基本上是两个方面的原因:

1)你的postgresql绑定在127.0.0.1地址上,你想从其他计算机上询问他。在这种情况下,您必须检查postgresql.conf文件并检查行listen_addresses。必须有'*'。或者,您可以使用防火墙,并且保护对端口5432的访问权限,这是默认的Postgresql端口。

2)您在文件pg_hba.conf中设置了错误的权限。请检查这个文件,它显然有一些评论的例子。