HikariCP Postgresql驱动声称不接受JDBC URL

68

我已将我的应用程序推送到 Cloud Foundry,但每次连接到我的 PostgreSQL/Elephant SQL 时都会收到此错误。

 Driver org.postgresql.Driver claims to not accept JDBC URL jdbc:postgres://cwkqmdql:SsVqwdLxQObgaJAYu68O-8gTY1VmS9LX@pellefant.db.elephantsql.com:5432/cwkqmdql/

我有没有错过什么?


URL确实无效。如果cwkqmdql:SsVqwdLxQObgaJAYu68O-8gTY1VmS9LX部分应该是用户名和密码,则不能像那样指定它。请参阅手册以获取正确的URL:https://jdbc.postgresql.org/documentation/94/connect.html - user330315
@a_horse_with_no_name 我尝试将我的 spring.datasource.url 更改为 jdbc:postgres://pellefant-01.db.elephantsql.com:5432/cwkqmdql,但仍然出现相同的错误。 - user962206
9个回答

94

该URL存在一些问题,新版本的PSQL驱动程序可能会报错。

  1. 应将jdbc:postgres:替换为jdbc:postgresql:
  2. 不要使用jdbc:postgresql://<username>:<passwor>...,改用用户参数:jdbc:postgresql://<host>:<port>/<dbname>?user=<username>&password=<password>
  3. 在某些情况下,您需要通过添加sslmode=require参数来强制进行SSL连接。

因此,您的URL应该是:

jdbc:postgresql://@pellefant.db.elephantsql.com:5432/cwkqmdql?user=cwkqmdql&password=SsVqwdLxQObgaJAYu68O-8gTY1VmS9LX

或者

jdbc:postgresql://@pellefant.db.elephantsql.com:5432/cwkqmdql?user=cwkqmdql&password=SsVqwdLxQObgaJAYu68O-8gTY1VmS9LX&sslmode=require

希望这能有所帮助。


14
在我的情况下,我需要一个斜杠作为结尾。例如jdbc:postgresql://db:5432/ - David Groomes
3
在Heroku的Postgres上,使用Spring Boot 2对我没用。 - jonashackt
3
谢谢,这是由于jdbc:postgre:/引起的。我用jdbc:postgresql:/替换了它,现在没问题了。 - Walterwhites
3
为什么在主机名后面加上@符号?在我的情况下,当我从主机名中删除'@'时,它起作用了。 - UVM
1
这个答案确实帮助我从本地机器连接到Heroku Postgres。 - Holger Ludvigsen
显示剩余2条评论

24

在我的情况下,是在java.properties文件中用双引号定义属性

通过更改

jdbcUrl="url"

jdbcUrl=url

它再次起作用了


8
抱歉,那是我的问题,也。谢谢。 - rob
1
这也是问题所在。对于我的情况,混淆来自于不同配置文件(application.properties vs application.yml)的不同语法。 - Hoàng Long
如果我正在使用Helm Chart创建密钥,而在创建密钥时需要将每个值用引号括起来...然后在applications.properties中,我们注入环境变量。 - Abdennour TOUMI
首先确保您已经在pom.xml中导入了驱动程序(如果您正在使用maven),然后继续阅读答案。 - testing_22

11
我遇到的问题是,在属性文件中我给数据源URL加了双引号。 我所提供的内容为:
spring.datasource.url="jdbc:postgresql://localhost:5432/postgres"

正确的URL传递方式是

spring.datasource.url=jdbc:postgresql://localhost:5432/postgres

2

替换

postgresql://localhost/db_name

使用

jdbc:postgresql://localhost/db_name

2
我也遇到了这个错误,但我意识到是因为我在URL中输入了postgressql而不是postgresql

2

我之前也遇到了相同的错误,后来发现我没有在application.properties类中将我的个人资料设置为活动状态。

spring.profiles.active = dev

1

我在WebFlux中使用h2 DB时遇到了同样的问题。问题出在spring.datasource.driver上。

无法工作

spring.datasource.driver=org.h2.Driver

工作中

spring.datasource.driver-class-name=org.h2.Driver

1

我遇到了同样的错误。 之前在我的 application.properties 中使用了以下内容。我在数据库 URL 前面加了 jdbc:postgres 前缀。

    >JDBC_DATABASE_URL=jdbc:postgres://host.com:5432/dbName

我们需要使用PostgreSQL而不是postgres。

    >JDBC_DATABASE_URL=jdbc:postgresql://host.com:5432/dbName

0
在我的情况下,两个配置文件格式不同:
  1. src/main/resources 中的 application.properties
  2. src/test/resources 中的 application.yml
在将 src/test/resources 中的 application.yml 更改为 application.properties 后,问题得以解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接