- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个查询 PostgreSQL 数据库的 Java 程序。我正在关注 this example,但在这里遇到了麻烦:
connection = DriverManager.getConnection(
"jdbc:postgresql://127.0.0.1:5432/testdb", "mkyong",
"123456");
根据 JavaDoc for DriverManager,第一个字符串是“jdbc:subprotocol:subname
形式的数据库 url。当我连接到服务器时,我输入 psql -h dataserv.abc。 company.com -d app -U emp24
并提供密码 qwe123
(例如)。getConnection
的第一个参数应该是什么?
我试过了
connection = DriverManager.getConnection(
"jdbc:postgresql://dataserv.abc.company.com", "emp24",
"qwe123");
并得到运行时错误:找不到合适的驱动程序
。
我已经下载了 JDBC4 Postgresql 驱动程序,版本 9.2-1000。
在我修复我的程序以使用 Class.forName("org.postgresql.Driver");
加载驱动程序后,它可以识别 JDBC URL,但它仍然无法连接。我现在有一个新错误。
当我运行程序时出现错误,这是带有堆栈跟踪的输出:
-------- PostgreSQL JDBC Connection Testing ------------
PostgreSQL JDBC Driver Registered!
Connection Failed! Check output consoleorg.postgresql.util.PSQLException: 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:207)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:65)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:140)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:21)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:31)
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:23)
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)
at DatabaseConnect.main(DatabaseConnect.java:32)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at org.postgresql.core.PGStream.<init>(PGStream.java:60)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:101)
... 11 more
我像这样格式化 getConnection
的 URL:
"jdbc:postgresql://dataserv.abc.company.com:5432/app"
最佳答案
很可能您未能通过 DriverManager 注册 JDBC 驱动程序,因此 JDBC 不知道如何处理 jdbc:postgresql:
。在尝试使用 DriverManager.getConnection
之前尝试 Class.forName("org.postgresql.Driver");
。您链接到的示例代码中显示了这一点(这是第一行),在 DriverManager documentation 的序言中进行了解释。 ,并且在下面链接的 PgJDBC 文档中也有详细解释。
或者,您可能打错了 jdbc:postgresql:
,所以 DriverManager 正在寻找名为 postgrsql
或 Postgresql
的驱动程序,或者一些不会被注册的东西。
最后,您可能会吞下类加载异常,因此驱动程序加载失败并且您看不到它,就像这样(非常糟糕)的代码:
// Very bad code, never do this
try {
Class.forName("org.postgresql.Driver");
} catch (ClasNotFoundException ex) {}
永远不要做上述事情。要么将异常包装在未经检查的运行时异常中,要么将 throws ClasNotFoundException
添加到您的方法定义中。
根据 PgJDBC documentation和 FAQ , 要使用您必须的驱动程序:
CLASSPATH
; Class.forName("org.postgresql.Driver");
以便在 DriverManager 中注册;这些都是手册的链接。
有关 CLASSPATH
的更多信息,请参阅 wikipedia
JDBC DriverManager
在 JavaDoc 中讨论和 JDBC tutorial .
关于 PostgreSQL 的 JDBC URL 格式,that's in the documentation too .
With JDBC, a database is represented by a URL (Uniform Resource Locator). With PostgreSQL™, this takes one of the following forms:
jdbc:postgresql:database
jdbc:postgresql://host/database
jdbc:postgresql://host:port/database
文档继续解释每个参数的含义和可选的连接参数。
从这里您可以看到,在回答您对 John Woo 的回答的评论时,如果您的服务器正在监听默认的 PostgreSQL 端口,则您不必指定端口,如果使用 psql
连接时无需指定端口。
这使您的 getConnection
参数正确,问题是您没有先注册驱动程序。
关于java - PgJDBC : "no suitable driver found" when following tutorial, 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13105955/
我一直遇到 mySQL 数据库连接问题。我收到一个错误: No suitable driver found for jdbc:mysql://127.0.0.1/sakila. 我已经安装了 mySQ
我正在尝试编写一个带有嵌入式 Derby 的程序,但是当我运行它时,它显示: run: Jul 14, 2017 9:19:54 PM gfdh.Login Doconnect SEVERE: nul
我正在尝试在转换 String 的 List 后对 Integer 的 List 进行排序转换为Integer List。它给了我这个错误: no suitable method found for
我能够很好地部署我的 war ,当我尝试运行它时,我在控制台日志中收到一些运行时错误 Cannot create JDBC driver of class 'oracle.jdbc.OracleDri
我正在开始 Android 编程。我无法编译我的程序,因为出现以下错误: 错误:没有找到适合 ArrayAdapter() 的构造函数 这是我的个人适配器: public class StationL
我正在尝试解码 Base64 图像并将其放入 WPF 图像源中。但是,我使用的代码有一个错误: No imaging component suitable to complete this opera
我在客户端和服务器上都设置了使用 Jaxb2 的 MarshallingMessageConverter 关注 this问题。 这是在服务器端: @Configuration @EnableWebMv
我们正在将 Struts 1.2 项目从 JDK 1.6 迁移到 1.8,并将应用程序服务器 jboss5.1 迁移到 tomcat 8.5。所以我们开始将 JNDI 数据源链接到 tomcat,但似
我是 java 新手,正在尝试为 Minecraft 制作模组,但我不知道如何修复此错误: src\minecraft\net\minecraft\src\ThreadConnectToServer.
我最近一直在做一个项目,在这个项目中我最终使用了一个扩展另一个类(即连接和传输)的类。我收到的错误是“错误:没有找到适合 Connection 的构造函数(无参数)”。错误是在 Transfer 中构
我正在尝试使用 JDBC 接收器连接器将 Kafka 与 Postgres 接收器结合使用。 异常: INFO Unable to connect to database on attempt 1/3
这个问题已经有答案了: Connect Java to a MySQL database (14 个回答) 已关闭 6 年前。 java.sql.SQLException: No suitable d
我正在制作一个简单的注册程序,当我单击“提交”到我的 IDE 日志时,我收到此错误: java.sql.SQLException: No suitable driver found for jdbc:
我在使用 java 和 jdbc 时遇到了一些问题。特别是,虽然我的代码在 NetBeans 项目中完美运行,但当我尝试在终端或 ubuntu vps(这是我需要它工作的地方)上执行它时,我总是遇到此
我有一个带有图像 uploader 的网站,每当用户尝试上传图像时,他们都会收到此错误消息: “没有合适的节点可以满足您的请求。” 我已经联系了托管公司(mosso),他们说这对他们来说没什么。知道导
美好的一天! 我知道有很多关于此类问题的帖子,但由于我使用的是嵌入式 Derby,所以我查看了其中一些帖子但找不到问题的答案。 我收到这个错误: ##THIS IS GENERATED BY THE
我正在编写一个必须调用休息服务的 spring mvc 应用程序(Spring 新手)。我在我的 VM(Linux 中的 weblogic 10.3.6)中部署了其余服务,我正在编写的应用程序在我的本
我正在使用 GUICE 进行依赖项注入(inject),以使用 Dropwizard 构建 RESTful API。这是我收到的错误: com.google.inject.ConfigurationE
您好!终于开始学习 C,我认为是时候开始使用调试器了。此时我使用 Gvim 作为编辑器,使用命令行进行编译。在尝试了几个调试器(KDbg、ddd、insight)之后,运行 gdb 似乎是目前最简单和
我正在实现他们文档中给出的 firebase 示例。我面临这个错误: com.fasterxml.jackson.databind.JsonMappingException: No suitable
我是一名优秀的程序员,十分优秀!