Scala 玩can';找不到数据库
所以,三天来,我在游戏方面遇到了各种各样的问题,我对这个框架还不熟悉,但我不知道发生了什么。所以,在我无法使用Slick之后,由于一些期货永远不会返回价值,我决定改用Anorm。它成功了,直到我决定添加第二个存储库。。。之后,我现在无法加载我的页面,因为我一直收到以下消息:Scala 玩can';找不到数据库,scala,jdbc,playframework,Scala,Jdbc,Playframework,所以,三天来,我在游戏方面遇到了各种各样的问题,我对这个框架还不熟悉,但我不知道发生了什么。所以,在我无法使用Slick之后,由于一些期货永远不会返回价值,我决定改用Anorm。它成功了,直到我决定添加第二个存储库。。。之后,我现在无法加载我的页面,因为我一直收到以下消息: @769g71c3d - Internal server error, for (GET) [/] -> play.api.UnexpectedException: Unexpected exception[Prov
@769g71c3d - Internal server error, for (GET) [/] ->
play.api.UnexpectedException: Unexpected exception[ProvisionException: Unable to provision, see the following errors:
1) Error injecting constructor, java.lang.IllegalArgumentException: Could not find database for pmf
at dao.ActivityTypeRepository.<init>(ActivityTypeDAO.scala:13)
at dao.ActivityTypeRepository.class(ActivityTypeDAO.scala:13)
while locating dao.ActivityTypeRepository
for the 1st parameter of services.ActivityTypeServiceImpl.<init>(ActivityTypeService.scala:17)
while locating services.ActivityTypeServiceImpl
while locating services.ActivityTypeService
这些是我的课程:
@Singleton
class ActivityTypeRepository @Inject()(dbapi: DBApi)(implicit ec: ExecutionContext) {
private val db = dbapi.database(RepositorySettings.dbName)
private[dao] val activityTypeMapping = {
get[Int]("activityType.id") ~
get[String]("activityType.name") map {
case id ~ name => ActivityType(id, name)
}
}
def listAll: Future[Seq[ActivityType]] = Future {
db.withConnection { implicit conn =>
SQL("SELECT * FROM ActivityType").as(activityTypeMapping *)
}
}
}
@Singleton
class UserRepository @Inject()(dbApi: DBApi)(implicit ec: ExecutionContext){
private val db = dbApi.database(RepositorySettings.dbName)
private[dao] val userMapping = {
get[Option[Long]]("users.id") ~
get[String]("users.email") ~
get[Option[String]]("users.name") ~
get[Option[String]]("users.surname") map {
case id ~ email ~ name ~ surname => User(id, email, name, surname)
}
}
def add(user: User): Future[Option[Long]] = Future {
db.withConnection { implicit conn =>
SQL"INSERT INTO users(id, email, name, surname) VALUES (${user.id}, ${user.email}, ${user.name}, ${user.surname})".executeInsert()
}
}
def find(id: Long): Future[Option[User]] = Future {
db.withConnection { implicit conn =>
SQL"SELECT * FROM User WHERE id = $id".as(userMapping *).headOption
}
}
def findByEmail(email: String): Future[Option[User]] = Future {
db.withConnection { implicit conn =>
SQL"SELECT * FROM User WHERE email = $email".as(userMapping *).headOption
}
}
def listAll: Future[Seq[User]] = Future {
db.withConnection { implicit conn =>
SQL("SELECT * FROM User").as(userMapping *)
}
}
}
编辑:
添加到application.conf
db {
default.driver = org.postgresql.Driver
default.url = "jdbc:postgresql://localhost:5432/pmf_visualizations"
}
但是没有变化。Marin,您可能应该向我们展示更多配置的详细信息您的数据库名称是什么?您似乎忘了在配置文件中设置它,它现在是
DATABASENAME
您需要用真实的数据库名替换它。我确实替换了它。用于Slick插件(粘贴)的DB conf不是用于播放JDBC的
db {
default.driver = org.postgresql.Driver
default.url = "jdbc:postgresql://localhost:5432/pmf_visualizations"
}