2011-02-01 100 views
1

我想從其他機器上存在的PostgreSQL訪問表。 我收到以下錯誤。無法連接到PostgreSQL

Connection refused. Check that the hostname and port are correct and that the 
postmaster is accepting TCP/IP connections. 

at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:136) 
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66) 
    at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125) 
    at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30) 
    at org.postgresql.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24) 
    at org.postgresql.Driver.makeConnection(Driver.java:393) 
    at org.postgresql.Driver.connect(Driver.java:267) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 

我在pg_hba.conf文件中配置了我的ip,但也存在相同的錯誤。有什麼可以解決它的?

回答

3

您可以telnet到您認爲PostgreSQL正在偵聽的IP地址和端口號嗎?

  • 如果沒有,麻煩的是,postmaster沒有運行,或者說你有什麼怪僻您的網絡中 - 防火牆阻止訪問端口,或無法找到主機或什麼的。

  • 如果你可以通過telnet與postmaster聯繫,那麼可能是你給了錯誤的憑證或其他東西 - 但錯誤表明你的客戶端代碼無法找到遠程PostgreSQL。但是,更可能的是,Java代碼使用的配置與您成功使用telnet進行演示的配置不同。

0

postgresql.conf中「listen_addresses」的設置是什麼?

SHOW listen_addresses; 

你在pg_hba.conf和postgresql.conf中的變化後重新加載配置文件嗎?

SELECT pg_reload_conf(); 
+0

listen_address有值'*'仍然沒有運氣.. – technocrat 2011-02-01 09:39:38

0

我有同樣的問題。我在pg_hba.conf中添加了以下條目並開始工作。確保你了變化配置文件後,重新啓動Postgres的

host all   all   0.0.0.0/0   md5 
1

我是新來的Pos​​tgreSQL,但我也有同樣的問題很多次,最後我找到了解決方案。

問題出在防火牆阻塞端口(例如:5432),一旦通過防火牆授予訪問權限,我就可以連接到數據庫服務器。

您必須將您在postgreSql中使用的端口僅添加到防火牆。

在此之後,我的postgreSql與Jdbc一起工作良好。