玩框架 PostgreSQL 连接字符串

Play framework PostgreSQL connection string

我无法使用如下常规字符串配置我的 Play 框架 PostgreSQL 连接:

db.default.driver=org.postgresql.Driver
db.default.url="postgres://localhost:5432/mydb"

我收到错误 "Cannot connect to database [default]"。

如果我将 URL 更改为:

,它会起作用
db.default.url="jdbc:postgresql://localhost:5432/mydb"

但我想坚持使用以前的版本,因为环境已经配置了这样的变量。

我正在使用带有 Java 1.8 和以下 JDBC 驱动程序的最新 Play (2.3.8):

libraryDependencies += "org.postgresql" % "postgresql" % "9.4-1201-jdbc4"

如果连接字符串包含用户名/密码信息,则看起来正常:

db.default.url="postgres://postgres:postgres@localhost:5432/mydb"

这是限制还是我遗漏了什么?

您需要在 url 前面指定 jdbc 以了解要加载哪个驱动程序处理数据库连接

您在这里输入的内容:

db.default.url="postgres://localhost:5432/mydb"

不是 'regular string',而是一个不正确的值。

即使您设法找到一种方法来坚持使用它(Play 是开源的,所以没有人可以阻止您),它也会让所有查看此设置的开发人员感到困惑,这包括未来的您。

在原始上下文之外使用配置键是一种冒险的做法,因此您应该对抗它而不是框架。 如果你想避免重复你的配置字符串那么你应该做的是这样的:

my.db.address="localhost:5432/mydb"
db.default.url="jdbc:postgresql://"${my.db.address}
my.reusable.key="postgres://"${my.db.address}

并在需要时使用 my.reusable.key,同时让 db.default.url 发挥作用。

回答您对可能的限制的疑问,我认为您可能错过了明确标出正确配置字符串的文档:https://www.playframework.com/documentation/2.3.8/SettingsJDBC