0

升级到 Play 的 2.5 版本后,当我尝试在生产模式下运行项目时遇到了这个问题。似乎在这个版本中我需要手动初始化池ScalikeJDBC:连接池尚未初始化。(名称:'default) 我不明白我该怎么做。我添加了这个类:

import play.api.Logger
import scalikejdbc._
import scalikejdbc.config._

class DbInitializer {
    DBs.setupAll()
    Logger.debug("DB initialized")
}

并在我的模块中将其标记为 EagerSingleton:

class GlobalModule extends AbstractModule {
  def configure() = {
    bind(classOf[DbInitializer]).asEagerSingleton()
  }
}

现在,当我在生产中运行我的项目时,我看到:

[info] 应用程序 - 为数据源“默认”创建池 [info] padDefaultDBApi - 数据库 [默认] 连接在 jdbc:postgresql://localhost:5432/inetshop [debug] 应用程序 - [debug] 应用程序 - 数据库已初始化糟糕,无法启动服务器。com.google.inject.CreationException: 无法创建注入器,看到如下错误:

1) 注入构造函数时出错,java.lang.IllegalStateException: Connection pool is not yet initialized.(name:'default) at controllers.Application.(Application.scala:20)

所以我的初始化程序成功运行但仍然面临这个问题。需要帮助来解决这个问题。

4

1 回答 1

0

我有一个类似的问题,(连接池设置被忽略)不完全相同,但也许它有帮助:

我们必须启用 scalikejdbc-play-dbapi-adapter: build.sbt: "org.scalikejdbc" %% "scalikejdbc-play-dbapi-adapter" %

并添加到 application.conf: play.modules.enabled += "scalikejdbc.PlayDBApiAdapterModule"

于 2016-12-08T16:04:35.637 回答