簡體   English   中英

沒有合適的司機。嘗試使用Hibernate連接到Heroku上的postgresql數據庫

[英]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

分解:

  • JDBC方案: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM