2015-10-26 55 views
3

我嘗試使用下面的驅動程序連接到我的PostgreSQL數據庫:即使Class.forName工作,沒有合適的postgres驅動程序?

<dependency> 
    <groupId>org.postgresql</groupId> 
    <artifactId>postgresql</artifactId> 
    <version>9.4-1204-jdbc41</version> 
</dependency> 

我用下面的代碼:

Class.forName("org.postgresql.Driver"); 
System.out.println("Driver version: " + org.postgresql.Driver.getVersion()); 

String jdbcUrl = "jdbc:postgresql://localhost:5432"; 
String user = "postgres"; 
String pass = "password"; // super secure 

Connection c = DriverManager.getConnection(jdbcUrl, user, pass); 

而且我得到以下輸出

驅動程序版本:PostgreSQL 9.4 JDBC4.1(內部版本1204)
java.sql.SQLException:找不到適用於jdbc的驅動程序:postgresql:// localhost:5432
在java.sql.DriverManager.getConnection(DriverManager.java:689)
在java.sql.DriverManager.getConnection(DriverManager.java:247)
在[行連接C =的DriverManager ...]

那麼這個9.4驅動程序怎麼不合適呢?我知道我可以通過我的psql命令行登錄,但似乎無法通過Java使其工作。

我所做的應用程序,如過很多次,但似乎無法看到我在這裏失蹤......

+3

嘗試附加一個數據庫名稱的網址:'JDBC:在PostgreSQL:/ /本地主機:5432/dbname'。在類路徑中是否有其他JDBC驅動程序?有些實際上攔截了DriverManager搜索正確驅動程序的方式。 –

+0

哇...我會期望它只是使用默認的數據庫...顯然,我必須明確...如果你想創建一個答案,我會很樂意給你信用的。 – corsiKa

+0

那麼,根據手冊,數據庫名稱是可選的:https://jdbc.postgresql.org/documentation/94/connect.html –

回答

4

所有信貸a_horse_with_no_name的評論,但這個問題需要一個答案。

要麼在連接字符串中指定數據庫,要麼添加尾部斜線。

錯誤的URL:

jdbc:postgresql://localhost:5432

好:

jdbc:postgresql://localhost:5432/

jdbc:postgresql://localhost:5432/thebestdatabase

+0

什麼是救生員 – xgord

相關問題