背景
我有一个非常基本的基于Play和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._
对于与数据库交互的任何代码,应用程序知道在application.conf
中引入定义,并且在运行我的应用程序时会发生以下情况:
问题
我想迁移到使用Postgres数据库,所以我已将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"))
}
}
}
}
我收到一些我不理解的错误:
[error] p.a.d.s.d.TableScanner $ - 转换为DDL时出错。检查用于Table / TableQuery的配置文件是否与DDL生成使用的配置文件相同。
[info] foospec
[info] DB应该
[info]!商店Foos
[error] SlickException:JdbcProfile没有类型Int / INTEGER的TypeInfo
(如果需要,我有一个错误的堆栈跟踪,但我现在已经把它留了出来)
知道我做错了吗?
答案 0 :(得分:1)
我不确切知道在哪里,但您在不同的地方导入不同的Slick驱动程序。当从它们中获取的工件混淆时,您会得到SlickException: JdbcProfile has no TypeInfo for type Int/INTEGER
。