【发布时间】:2015-11-18 00:27:29
【问题描述】:
我正在尝试在 Windows 7 和 Ubuntu 14.04 之间创建数据库连接。在这种情况下,我在我的 Ubuntu 系统上安装了 Postgresql,并在“postgresql.conf”中将listen_addresses 从“localhost”更改为“*”。接下来,我将 'host all all 192.168.2.1/24 md5' 添加到 'pg_hba.conf' 文件中。
使用此配置,可以使用 pgAdmin 3 连接到数据库。但是如果我尝试连接 jdbc 就不行了。
我正在使用版本 - JDBC:'9.3-1103 JDBC 3',Postgresql:9.3。
起初,我用基本代码构建了一个小测试项目:
Properties properties = new Properties();
properties.setProperty("user", "user");
properties.setProperty("password", "pw");
properties.setProperty("ssl", "true");
String url = "jdbc:postgresql://192.168.2.143:5432/testdb";
String driverJDBC = "org.postgresql.Driver";
Connection connection = null;
try {
Class.forName(driverJDBC);
connection = DriverManager.getConnection(url, properties);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.getStackTrace();
}
try {
if (connection != null) {
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("select * from testtable;");
while (rs.next()) {
System.out.println(rs.getString(2));
}
}
} catch (SQLException e) {
e.printStackTrace();
}
这个小程序产生错误信息:
org.postgresql.util.PSQLException: Der Verbindungsversuch schlug fehl.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:240)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:143)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:21)
at org.postgresql.jdbc3g.Jdbc3gConnection.<init>(Jdbc3gConnection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:412)
at org.postgresql.Driver.connect(Driver.java:280)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at db.DBConnection.make(DBConnection.java:23)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:75)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:439)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
我尝试禁用 windows 防火墙,其他 JDBC 版本 (4)。
也许有人有想法?
附言。希望我的英语没问题;)
【问题讨论】:
-
您确定 PSQL 服务器正在运行吗?
-
您是否尝试过从简单的 java 应用程序而不是从 tomcat 进行连接(堆栈跟踪看起来像是您正在尝试从运行在 tomcat 中的东西进行连接)?
-
所以你是从 192.168.2.1 连接的,对吗?
-
@mic4ael:是的,我确定。我可以通过 pgAdmin 3 毫无困难地连接。
-
@WeareBorg 来自 192.168.2.139。但这是同一个子网 (/24) 还是我错了?
标签: java postgresql jdbc