Playframework 转换为postgres时出错
背景Playframework 转换为postgres时出错,playframework,slick,slick-2.0,playframework-2.3,play-slick,Playframework,Slick,Slick 2.0,Playframework 2.3,Play Slick,背景 游戏2.3 光滑2.1 玩滑头0.7 在类型安全激活器中运行 我有一个非常基本的游戏和基于Slick的应用程序。到目前为止,我一直在使用大多数示例中默认使用的内存中h2数据库 在application.conf中,我有以下几行: db.default.driver=org.h2.Driver db.default.url="jdbc:h2:mem:play" 如果我使用 import play.api.db.slick.Config.driver.simple._
- 游戏2.3
- 光滑2.1
- 玩滑头0.7
- 在类型安全激活器中运行
application.conf
中,我有以下几行:
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
如果我使用
import play.api.db.slick.Config.driver.simple._
对于与数据库交互的任何代码,应用程序都知道在application.conf
中引入定义,当我运行应用程序时,会发生以下情况:
- 已创建evolutions.default/1.sql
- 在内存中实例化了一个新的h2数据库
- 1.sql在该数据库上运行
- 应用程序可以与数据库交互
application.conf
更改为:
db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost:5432/testdb"
db.default.user=testuser
我已将以下内容添加到我的build.sbt
libraryDependencies ++= Seq(
...
"org.postgresql" % "postgresql" % "9.3-1100-jdbc4"
)
但是,如果我编写如下测试:
import models._
import org.specs2.mutable.Specification
import play.api.db.slick.Config.driver.simple._
import play.api.db.slick.DB
import scala.language.reflectiveCalls
import play.api.test.{FakeApplication, WithApplication}
class FooSpec extends Specification {
"DB" should {
"store Foos" in new WithApplication {
val foos = TableQuery[FooTable]
DB.withSession { implicit s: Session =>
foos.insert(Foo("bar"))
}
}
}
}
我犯了一些我不理解的错误:
[错误]p.a.d.s.d.TableScanner$-转换为DDL时出错。检查用于表/表查询的配置文件是否与DDL生成使用的配置文件相同
[信息]foospec
[信息]DB应该
[信息]!食品店
[错误]异常:JdbcProfile没有Int/INTEGER类型的TypeInfo
(如果需要的话,我有一个错误的堆栈跟踪,但现在我已经忽略了它)
你知道我做错了什么吗?我不知道确切的位置,但你在不同的地方导入了不同的光滑驱动程序。当从它们获取的工件混淆时,您会得到
SlickException:JdbcProfile没有Int/INTEGER类型的TypeInfo
您是正确的-虽然我实际上没有引用导入不同数据库驱动程序的旧.scala文件,但它仍然被导入到我的测试中,因此出现了这个问题。谢谢你的指点。