【问题标题】:Play framework 2.5: ScalikeJDBC: Connection pool is not yet initialized on start播放框架 2.5:ScalikeJDBC:连接池在启动时尚未初始化
【发布时间】:2016-12-13 17:49:56
【问题描述】:

升级到 2.5 版 Play 后,当我尝试在生产模式下运行项目时遇到了这个问题。似乎在这个版本中我需要手动初始化池ScalikeJDBC: Connection pool is not yet initialized.(name:'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] p.a.d.DefaultDBApi - 数据库 [默认] 连接在 jdbc:postgresql://localhost:5432/inetshop [调试] 应用程序 - [调试] 应用程序 - 数据库已初始化 糟糕,无法启动服务器。 com.google.inject.CreationException: 无法创建注入器,看到如下错误:

1) 注入构造函数时出错,java.lang.IllegalStateException: 连接池尚未初始化。(名称:'默认)在 controllers.Application.(Application.scala:20)

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

【问题讨论】:

  • DBs.setupAll() 是做什么的?
  • 这里scalikejdbc.org/documentation/… 他们说:“在调用 scalikejdbc.config.DBs.setupAll() 之后,连接池就准备好了。”

标签: postgresql scala playframework scalikejdbc


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 2012-05-03
    • 2011-07-22
    相关资源
    最近更新 更多