【问题标题】:Postgres JDBC Issue - No suitable driver found for postgresql://localhost:5432/postgres - JDBC driver already configured on buildpathPostgres JDBC 问题 - 没有为 postgresql://localhost:5432/postgres 找到合适的驱动程序 - JDBC 驱动程序已在构建路径上配置
【发布时间】:2016-11-12 13:05:23
【问题描述】:

我知道当构建路径中没有配置正确的 jdbc 驱动程序 jar 时会出现此问题,我尝试为 postgres 添加一些 jdbc jar,但我遇到了这个问题。请找到我尝试过的以下罐子。

使用

  • postgres: 1.16.1
  • Eclipse 版本: Indigo Service Release 2
  • Java 版本: 8

我试过的罐子

  1. postgresql-9.4.1208.jre6
  2. postgresql-connector-jdbc4.jar
  3. postgresql-jdbc.jar
  4. postgresql-9.3-1103.jdbc3
  5. postgresql-9.2-1003-jdbc4-sources.jar
  6. pg73jdbc3
  7. jdbc7.1-1.1

阅读其他关于堆栈溢出的帖子,我什至尝试将系统环境变量设置如下..

  • 用户变量 - 管理员 - 类路径

C:\Program Files\PostgreSQL\9.2\lib

  • 系统变量 - 路径

C:\Program Files\PostgreSQL\9.2\bin

不确定是否需要这样做

我的 .properties 文件中的数据库详细信息设置

jdbc.driverClassName=org.postgresql.Driver
jdbc.url=postgresql://localhost:5432/postgres
jdbc.username=admin
jdbc.password=admin

使用基于 spring 框架的应用程序

日志:

org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: No suitable driver found for postgresql://localhost:5432/postgres
    at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:240)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at $Proxy8.getCollegeDetails(Unknown Source)
    at com.cts.bo.HESBO.registerCourse(HESBO.java:42)
    at com.cts.facade.HESFacade.registerCourse(HESFacade.java:34)
    at com.cts.manager.HESManager.registerCourse(HESManager.java:34)
    at com.cts.presentation.Tester.registerCourse(Tester.java:66)
    at com.cts.presentation.Tester.main(Tester.java:159)
Caused by: java.sql.SQLException: No suitable driver found for postgresql://localhost:5432/postgres
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:164)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119)
    at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:202)
    ... 11 more

请指导一下需要做什么。谢谢

【问题讨论】:

  • 您的数据库 JDBC URL 错误,应该以"jdbc:postgresql:" 开头,而不仅仅是"postgresql:"
  • @MarkRotteveel 我不确定应该在哪里进行更改,是否应该更改 .properties 文件中的配置? jdbc.url=postgresql://localhost:5432/postgres 到 jdbc.url=jdbc:postgresql://localhost:5432/postgres。我仍然面临同样的问题.... :(
  • @MarkRotteveel 非常感谢!它现在工作正常......

标签: java eclipse postgresql jdbc


【解决方案1】:

在为 postgresql 填写数据库详细信息时,您不会添加 url。您改为执行以下操作。

<bean id="dataSource" class="org.postgresql.xa.PGXADataSource">
    <property name="user" value="${username}" />
    <property name="password" value="${password}" />
    <property name="portNumber" value ="${portNumber}" />
    <property name="databaseName" value="${databaseName}" />
    <property name="serverName" value="${serverName}" />
</bean>

在您的应用程序上下文中和

username=yourusername
password=******
portNumber=5432
databaseName=yourdb
serverName=localhost

在您的属性文件中。当然,稍后您需要使用数据源 bean。看下面https://jdbc.postgresql.org/documentation/publicapi/org/postgresql/xa/PGXADataSource.html

【讨论】:

  • 它对我没有帮助,因为我得到“无法将 'org.postgresql.xa.PGXADataSource' 类型的属性值转换为属性 'dataSource' 所需的类型 'javax.sql.DataSource'。 " 错误,因为我使用的是 spring
  • stackoverflow.com/questions/38026217/… - 看到这个问题。在进行了我之前告诉过您的更改后,它对我有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 2021-12-05
  • 2013-05-17
  • 2022-09-26
  • 2019-08-17
  • 2016-08-09
相关资源
最近更新 更多