【问题标题】:No implementation Slick DatabaseConfigProvider was bound没有绑定实现 Slick DatabaseConfigProvider
【发布时间】:2018-08-30 15:50:42
【问题描述】:

我刚刚创建了一个虚拟项目并尝试将 Play 与 Slick 集成。我遵循了官方教程,但不幸的是没有正确运行它。 每次我尝试运行应用程序时都会出现以下错误:

play.api.UnexpectedException: Unexpected exception[ProvisionException: Unable to provision, see the following errors:

1) No implementation for play.api.db.slick.DatabaseConfigProvider was bound.
  while locating play.api.db.slick.DatabaseConfigProvider
    for the 1st parameter of com.reciper.repository.UserRepository.<init>(UserRepository.scala:13)

这是我的配置:

build.sbt

scalaVersion := "2.12.2"

libraryDependencies += guice
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "3.1.2" % Test
libraryDependencies += "com.typesafe.play" %% "play-slick" % "3.0.3"
libraryDependencies += "com.typesafe.play" %% "play-slick-evolutions" % "3.0.3"
libraryDependencies += "org.postgresql" % "postgresql" % "42.2.4"

应用程序.conf

play.evolutions {
  autoApply = true
}

#Slick for Play
slick.profile = "slick.jdbc.PostgresProfile$"
slick.db.driver = "org.postgresql.Driver"
slick.db.url = "jdbc:postgresql://localhost:5432/reciper"
slick.db.user = "postgres"
slick.db.password = "postgres"

UserRepository.scala

@Singleton
class UserRepository @Inject()(protected val dbConfigProvider: DatabaseConfigProvider)
                              (implicit executionContext: ExecutionContext) extends HasDatabaseConfigProvider[PostgresProfile] { ..codehere.. }

HomeController.scala

@Singleton
class HomeController @Inject()(repo: UserRepository) {...}

plugins.sbt

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.13")

我已经为此苦苦挣扎了 3 天多,但对它真的会起作用失去了希望。尝试了很多选择,但没有一个起作用

您知道缺少什么或错误吗?让我知道您是否需要任何其他文件 谢谢!

【问题讨论】:

    标签: scala playframework slick


    【解决方案1】:

    application.conf 中的以下配置有效

    build.sbt

    "com.typesafe.play" %% "play-slick" % "3.0.3"
    

    应用程序.conf

    slick.dbs.default.driver="slick.driver.PostgresDriver$"
    slick.dbs.default.db.driver="org.postgresql.Driver"
    slick.dbs.default.db.url="jdbc:postgresql://ec2-54-217-243-228.eu-west-1.compute.amazonaws.com:5432/d344onl0761ji5"
    slick.dbs.default.db.user=user
    slick.dbs.default.db.password="pass"
    

    【讨论】:

    • 我以前试过这个,但没有用,但现在可以了。以前我在那里有 dbs.reciper(reciper 是我的数据库的名称)并得到了错误。当我使用此配置将 Evolutions/reciper 更改为 Evolutions/default 时,它运行良好,谢谢你一百次!
    猜你喜欢
    • 2017-01-16
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 2015-12-22
    相关资源
    最近更新 更多