§Play Slick 常见问题解答
§我应该使用哪个版本?
请查看 兼容性矩阵 以了解您应该使用哪个版本。
§play.db.pool
被忽略
确实如此。更改 play.db.pool
的值不会影响 Slick 将使用的连接池。原因很简单,Play Slick 模块目前不支持使用与 HikariCP 不同的连接池。
§更改 Slick 使用的连接池
虽然 Slick 允许使用与 HikariCP 不同的连接池(但是,Slick 目前只为 HikariCP 提供内置支持,如果您想使用其他连接池,则需要提供 JdbcDataSourceFactory 的实现),Play Slick 目前不允许使用与 HikariCP 不同的连接池。如果您发现自己需要此功能,可以尝试在 Play 讨论论坛 中给我们留言。
§已配置到 play.api.db.DBApi
的绑定
如果您在启动 Play 应用程序时遇到以下异常
1) A binding to play.api.db.DBApi was already configured at play.api.db.slick.evolutions.EvolutionsModule.bindings:
Binding(interface play.api.db.DBApi to ConstructionTarget(class play.api.db.slick.evolutions.internal.DBApiAdapter) in interface javax.inject.Singleton).
at play.api.db.DBModule.bindings(DBModule.scala:25):
Binding(interface play.api.db.DBApi to ProviderConstructionTarget(class play.api.db.DBApiProvider))
您很可能已启用 jdbc 插件,如果您使用 Slick 访问数据库,这实际上没有意义。要解决此问题,只需从项目的构建中删除 Play 的 *jdbc* 组件。
另一种可能性是,另一个 Play 模块正在将DBApi绑定到其他具体实现。这意味着您仍然尝试将 Play Slick 与另一个用于数据库访问的 Play 模块一起使用,这可能不是您想要的。
§Play 抛出 java.lang.ClassNotFoundException: org.h2.tools.Server
如果您在启动 Play 应用程序时遇到以下异常
java.lang.ClassNotFoundException: org.h2.tools.Server
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
...
这意味着您正在尝试使用 H2 数据库,但忘记在项目的构建中添加对它的依赖项。解决问题很简单,只需在项目的构建中添加缺少的依赖项,例如:
"com.h2database" % "h2" % "${H2_VERSION}" // replace `${H2_VERSION}` with an actual version number
下一步:使用 Anorm 访问您的数据库
发现此文档中的错误?此页面的源代码可以在此处找到。阅读完文档指南后,请随时贡献拉取请求。有疑问或建议要分享?转到我们的社区论坛,与社区开始对话。