![](/img/trans.png)
[英]No suitable driver found on attempt to connect Heroku Database using JDBC
[英]No suitable driver. Trying to connect to a postgresql database on Heroku using Hibernate
很抱歉打擾你,但我一直收到錯誤,我不明白為什么。
正如標題中所指定的,我正在嘗試使用hibernate在運行heroku的postgresql數據庫上進行連接。 我的應用程序也在Heroku上運行。
它在本地模式下工作,我嘗試了幾個postgre驅動程序。
這是我的hibernate.cfg.xml:
<!-- PostgreSQL -->
<property name="connection.url">jdbc:postgresql://paafeblgkhhbkx:PhZEtHl2RHwbWDQJJOurmej89-@ec2-54-243-243-252.compute-1.amazonaws.com:5432/d1vsgjgnfr1koq</property>
<property name="connection.username">paafeblgkhhbk</property>
<property name="connection.password">My password</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create</property>
我收到會話時會覆蓋網址,密碼和用戶名:
Configuration configuration = new Configuration();
configuration.addAnnotatedClass(Client.class);
// and other classes
try {
Class.forName("org.postgresql.Driver");
System.out.println(" === === DRIVER FOUND === === ");
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println(" === === DRIVER NOT FOUND === === ");
}
configuration.configure();
System.out.println("============================= EXPORT SCHEMA ==========================");
new SchemaExport(configuration).create(true, true);
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
如您所見,找到了驅動程序。 我很確定網址也可以(如果我嘗試另一個網址,我會收到連接錯誤)
在這里我的依賴:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.9.Final</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
它們按照我的pom中的說明導出(我可以看到maven在部署我的應用程序時正在復制它):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals><goal>copy-dependencies</goal></goals>
</execution>
</executions>
</plugin>
所以在這一點上我看不出我做錯了什么:/
這是我得到的錯誤日志:
使用命令
java -cp target/classes:target/dependency/* test.Server
啟動進程java -cp target/classes:target/dependency/* test.Server
國家從開始變為上升
org.hibernate.annotations.common.Version
信息:HCANN000001:Hibernate Commons Annotations {4.0.1.Final}
org.hibernate.Version logVersion
信息:HHH000412:Hibernate Core {4.1.9.Final}
org.hibernate.cfg.Environment中
信息:HHH000206:找不到hibernate.properties
org.hibernate.cfg.Environment buildBytecodeProvider
信息:HHH000021:字節碼提供程序名稱:javassist
org.hibernate.cfg.Configuration配置
信息:HHH000043:從資源配置:/hibernate.cfg.xml
org.hibernate.cfg.Configuration getConfigurationInputStream
信息:HHH000040:配置資源:/hibernate.cfg.xml
org.hibernate.cfg.Configuration doConfigure
信息:HHH000041:已配置的SessionFactory:null
=== ===找到了駕駛員=== ===
=============================出口計划=================== =======
的org.hibernate.dialect.Dialect
信息:HHH000400:使用方言:org.hibernate.dialect.PostgreSQLDialect
org.hibernate.tool.hbm2ddl.SchemaExport執行
信息:HHH000227:運行hbm2ddl架構導出
org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
信息:HHH000402:使用Hibernate內置連接池(不供生產使用!)
org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
信息:HHH000115:Hibernate連接池大小:2
org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
信息:HHH000006:自動提交模式:false
org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
信息:HHH000401:在URL上使用驅動程序[org.postgresql.Driver] [jdbc:postgresql:// paafeblgkhhbkx:PhZEtHl2RHwbWDQJJOurmej89-@ec2-54-243-243-252.compute-1.amazonaws.com:5432 / d1vsgjgnfr1koq]
org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
信息:HHH000046:連接屬性:{user = paafeblgkhhbkx,password = * *}
org.hibernate.tool.hbm2ddl.SchemaExport執行
錯誤:HHH000231:架構導出失敗
java.sql.SQLException:沒有為jdbc找到合適的驅動程序:postgresql:// paafeblgkhhbkx:PhZEtHl2RHwbWDQJJOurmej89-@ec2-54-243-243-252.compute-1.amazonaws.com:5432 / d1vsgjgnfr1koq
在java.sql.DriverManager.getConnection(DriverManager.java:640)
在java.sql.DriverManager.getConnection(DriverManager.java:169)
在org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:193)
在org.hibernate.tool.hbm2ddl.ManagedProviderConnectionHelper.prepare(ManagedProviderConnectionHelper.java:55)
在org.hibernate.tool.hbm2ddl.DatabaseExporter。(DatabaseExporter.java:52)
在org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:367)
在org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:304)
在org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:293)
at persistance.SessionFactorySingleton.configureSessionFactory(SessionFactorySingleton.java:36)
at persistance.SessionFactorySingleton.getSessionFactory(SessionFactorySingleton.java:61)
at persistance.Controller.beginSession(Controller.java:24)
at persistance.Controller.sauvegarde(Controller.java:36)
at persistance.Controller.save(Controller.java:51)
at test.Server $ 1.handle(Server.java:44)
at com.sun.net.httpserver.Filter $ Chain.doFilter(Filter.java:83)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
at com.sun.net.httpserver.Filter $ Chain.doFilter(Filter.java:86)
at sun.net.httpserver.ServerImpl $ Exchange $ LinkHandler.handle(ServerImpl.java:589)
at com.sun.net.httpserver.Filter $ Chain.doFilter(Filter.java:83)
at sun.net.httpserver.ServerImpl $ Exchange.run(ServerImpl.java:561)
at sun.net.httpserver.ServerImpl $ DefaultExecutor.execute(ServerImpl.java:137)
at sun.net.httpserver.ServerImpl $ Dispatcher.handle(ServerImpl.java:367)
at sun.net.httpserver.ServerImpl $ Dispatcher.run(ServerImpl.java:339)
在java.lang.Thread.run(Thread.java:679)
謝謝你的時間 !
您的數據庫網址存在一些可疑之處:
JDBC:在PostgreSQL:// paafeblgkhhbkx:PhZEtHl2RHwbWDQJJOurmej89-@ec2-54-243-243-252.compute-1.amazonaws.com:5432 / d1vsgjgnfr1koq
分解:
postgresql
- 好的 paafeblgkhhbkx
- 可疑 PhZEtHl2RHwbWDQJJOurmej89-@ec2-54-243-243-252.compute-1.amazonaws.com
- 絕對錯誤。 您顯然試圖將用戶名和密碼作為連接URL的一部分包含在內,但這不是它的完成方式。 這些是使用單獨的屬性進行配置,如果你要包括他們在URI,這是怎么了:
jdbc:postgresql://localhost/test?user=fred&password=secret
作為旁注,我已成功連接到您的數據庫,因此除了正確的主機名外,我還可以證明您向公眾公開的憑據的正確性。 是時候更改密碼了......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.