【问题标题】:Play! framework 2.7 - Cannot connect to database玩!框架 2.7 - 无法连接到数据库
【发布时间】:2020-05-23 13:56:57
【问题描述】:

我正在尝试从我的 play 2.7 应用程序连接到我的 postgres 数据库。 数据库是一个用

初始化的 docker 镜像
docker run -d --name backend_local - p 127.0.0.1:5432:5432 -e POSTGRES_USER=markos -e POSTGRES-PASSWORD=**** -e POSTGRES_DB=backend_db --restart always registry.gitlab....

我的配置文件是这样的

# Database
db.default.driver=org.postgresql.jdbc.Driver
db.default.url="jdbc:postgresql://localhost:5432/backend_db"
db.default.username="markos"
db.default.password="****"
db.default.logSql=true

看不到连接有问题,但我仍然得到无法初始化到数据库[默认]

我得到的日志

2020-05-23 15:44:13.044+0200 [error] application - 

! @7fpl591k9 - Internal server error, for (GET) [/] ->

play.api.Configuration$$anon$1: Configuration error[Cannot initialize to database [default]]
    at play.api.Configuration$.configError(Configuration.scala:168)
    at play.api.Configuration.reportError(Configuration.scala:1014)
    at play.api.db.DefaultDBApi.$anonfun$initialize$1(DefaultDBApi.scala:76)
    at scala.collection.immutable.List.foreach(List.scala:389)
    at play.api.db.DefaultDBApi.initialize(DefaultDBApi.scala:68)
    at play.api.db.DBApiProvider.get$lzycompute(DBModule.scala:93)
    at play.api.db.DBApiProvider.get(DBModule.scala:77)
    at play.api.db.DBApiProvider.get(DBModule.scala:59)
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:85)
    at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:77)
Caused by: play.api.Configuration$$anon$1: Configuration error[dataSource or dataSourceClassName or jdbcUrl is required.]
    at play.api.Configuration$.configError(Configuration.scala:168)
    at play.api.Configuration.reportError(Configuration.scala:1014)
    at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:68)
    at play.api.db.PooledDatabase.createDataSource(Databases.scala:248)
    at play.api.db.DefaultDatabase.dataSource$lzycompute(Databases.scala:140)
    at play.api.db.DefaultDatabase.dataSource(Databases.scala:138)
    at play.api.db.DefaultDBApi.$anonfun$initialize$1(DefaultDBApi.scala:72)
    at scala.collection.immutable.List.foreach(List.scala:389)
    at play.api.db.DefaultDBApi.initialize(DefaultDBApi.scala:68)
    at play.api.db.DBApiProvider.get$lzycompute(DBModule.scala:93)
Caused by: java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
    at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:958)
    at play.api.db.HikariCPConfig.toHikariConfig(HikariCPModule.scala:138)
    at play.api.db.HikariCPConnectionPool.$anonfun$create$1(HikariCPModule.scala:55)
    at scala.util.Try$.apply(Try.scala:209)
    at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:52)
    at play.api.db.PooledDatabase.createDataSource(Databases.scala:248)
    at play.api.db.DefaultDatabase.dataSource$lzycompute(Databases.scala:140)
    at play.api.db.DefaultDatabase.dataSource(Databases.scala:138)
    at play.api.db.DefaultDBApi.$anonfun$initialize$1(DefaultDBApi.scala:72)
    at scala.collection.immutable.List.foreach(List.scala:389)

【问题讨论】:

  • 不确定为什么要使用带有-p选项的ip地址,它应该只是端口。
  • 将端口绑定到本地主机而不是任何其他地址
  • 你能分享你的 dockerfile 吗?
  • 该错误信息基本上意味着缺少url 设置。您的配置可能根本没有应用。尝试打印出您的配置,例如在您的控制器中,并确保您确实拥有正确的设置。
  • @cbley 我无法真正打印它,因为应用程序甚至没有启动。还有其他方法可以检查吗?我是否有可能缺少一些依赖项?

标签: java postgresql docker playframework database-connection


【解决方案1】:

似乎我正在处理数据库配置的 local_dev.conf 被错误地放置在它原本应该位于的 conf 文件之外!

【讨论】:

    猜你喜欢
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多