【发布时间】:2014-07-09 05:59:42
【问题描述】:
背景
- 播放 2.3
- 光滑 2.1
- Play-Slick 0.7
- 在 Typesafe Activator 中运行
我有一个非常基本的基于 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 中的定义,当我运行我的应用程序时会发生以下情况:
- evolutions.default/1.sql 已创建
- 在内存中实例化了一个新的 h2 数据库
- 1.sql 在该数据库上运行
- 应用程序可以与数据库交互
问题
我想迁移到使用 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 生成使用的配置文件相同。
[信息] foospec
[信息]数据库应该
[信息]!存储Foos
[error] SlickException: JdbcProfile has no TypeInfo for type Int/INTEGER
(如果需要,我有错误的堆栈跟踪,但我现在把它省略了)
知道我做错了什么吗?
【问题讨论】:
标签: playframework slick slick-2.0 playframework-2.3 play-slick