【发布时间】: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