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
  • 在类型安全激活器中运行
我有一个非常基本的游戏和基于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 db,因此我将
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文件,但它仍然被导入到我的测试中,因此出现了这个问题。谢谢你的指点。