加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 没有合适的驱动程序.尝试使用Hibernate连接到Heroku上的

发布时间:2020-12-15 04:07:27 所属栏目:Java 来源:网络整理
导读:很抱歉打扰你,但我一直收到错误,我不明白为什么. 正如标题中所指定的,我正在尝试使用hibernate在运行heroku的postgresql数据库上进行连接.我的应用程序也在Heroku上运行. 它在本地模式下工作,我尝试了几个postgre驱动程序. 这是我的hibernate.cfg.xml: !--
很抱歉打扰你,但我一直收到错误,我不明白为什么.

正如标题中所指定的,我正在尝试使用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>

所以在这一点上我看不出我做错了什么:/

这是我得到的错误日志:

Starting process with command java -cp target/classes:target/dependency/* test.Server

State changed from starting to up

org.hibernate.annotations.common.Version

INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}

org.hibernate.Version logVersion

INFO: HHH000412: Hibernate Core {4.1.9.Final}

org.hibernate.cfg.Environment

INFO: HHH000206: hibernate.properties not found

org.hibernate.cfg.Environment buildBytecodeProvider

INFO: HHH000021: Bytecode provider name : javassist

org.hibernate.cfg.Configuration configure

INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml

org.hibernate.cfg.Configuration getConfigurationInputStream

INFO: HHH000040: Configuration resource: /hibernate.cfg.xml

org.hibernate.cfg.Configuration doConfigure

INFO: HHH000041: Configured SessionFactory: null

=== === DRIVER FOUND === ===

============================= EXPORT SCHEMA ==========================

org.hibernate.dialect.Dialect

INFO: HHH000400: Using dialect:
org.hibernate.dialect.PostgreSQLDialect

org.hibernate.tool.hbm2ddl.SchemaExport execute

INFO: HHH000227: Running hbm2ddl schema export

org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl
configure

INFO: HHH000402: Using Hibernate built-in connection pool (not for
production use!)

org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl
configure

INFO: HHH000115: Hibernate connection pool size: 2

org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl
configure

INFO: HHH000006: Autocommit mode: false

org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl
configure

INFO: HHH000401: using driver [org.postgresql.Driver] at URL
[jdbc:postgresql://paafeblgkhhbkx:PhZEtHl2RHwbWDQJJOurmej89-@ec2-54-243-243-252.compute-1.amazonaws.com:5432/d1vsgjgnfr1koq]

org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl
configure

INFO: HHH000046: Connection properties: {user=paafeblgkhhbkx,
password=**}

org.hibernate.tool.hbm2ddl.SchemaExport execute

ERROR: HHH000231: Schema export unsuccessful

java.sql.SQLException: No suitable driver found for
jdbc:postgresql://paafeblgkhhbkx:PhZEtHl2RHwbWDQJJOurmej89-@ec2-54-243-243-252.compute-1.amazonaws.com:5432/d1vsgjgnfr1koq

at java.sql.DriverManager.getConnection(DriverManager.java:640)

at java.sql.DriverManager.getConnection(DriverManager.java:169)

at
org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:193)

at
org.hibernate.tool.hbm2ddl.ManagedProviderConnectionHelper.prepare(ManagedProviderConnectionHelper.java:55)

at
org.hibernate.tool.hbm2ddl.DatabaseExporter.(DatabaseExporter.java:52)

at
org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:367)

at
org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:304)

at
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)

at java.lang.Thread.run(Thread.java:679)

谢谢你的时间 !

解决方法

您的数据库网址存在一些可疑之处:

jdbc:postgresql://paafeblgkhhbkx:PhZEtHl2RHwbWDQJJOurmej89-@ec2-54-243-243-252.compute-1.amazonaws.com:5432/d1vsgjgnfr1koq

分解:

> JDBC方案:postgresql – 好的
> hostname:paafeblgkhhbkx – 可疑
>端口:PhZEtHl2RHwbWDQJJOurmej89-@ec2-54-243-243-252.compute-1.amazonaws.com – 绝对错误.

您显然试图将用户名和密码作为连接URL的一部分包含在内,但这不是它的完成方式.这些是使用单独的属性配置的,如果您要将它们包含在URI中,请按以下方式操作:

JDBC:在PostgreSQL://本地主机/测试用户= fred的&安培;密码=秘密?

作为旁注,我已成功连接到您的数据库,因此除了正确的主机名外,我还可以证明您向公众公开的凭据的正确性.是时候更改密码了……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读