【问题标题】:Slick MTable.getTables always fails with Unexpected exception[JdbcSQLException: Invalid value 7 for parameter columnIndex [90008-60]]Slick MTable.getTables 总是因意外异常而失败 [JdbcSQLException: Invalid value 7 for parameter columnIndex [90008-60]]
【发布时间】:2015-06-28 23:48:45
【问题描述】:

我写了这个非常简单的代码

object PersonDAO {
  val db = Database.forConfig("h2mem1")
  val people = TableQuery[People]

  def checkTable() : Boolean = {
    val action = MTable.getTables
    val future = db.run(action)
    val retVal = future map {result =>
      result map {x => x}
    }

    val x = Await.result(retVal, Duration.Inf)

    if (x.length > 0) {
      true
    } else {
      false
    }
  }
}

但是这总是失败并显示错误消息

play.api.UnexpectedException: Unexpected exception[JdbcSQLException: Invalid value 7 for parameter columnIndex [90008-60]]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:166) ~[play_2.10-2.3.4.jar:2.3.4]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:130) ~[play_2.10-2.3.4.jar:2.3.4]
    at scala.Option.map(Option.scala:145) ~[scala-library-2.10.5.jar:na]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:130) ~[play_2.10-2.3.4.jar:2.3.4]
    at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:128) ~[play_2.10-2.3.4.jar:2.3.4]
Caused by: org.h2.jdbc.JdbcSQLException: Invalid value 7 for parameter columnIndex [90008-60]
    at org.h2.message.Message.getSQLException(Message.java:84) ~[h2-1.0.60.jar:1.0.60]
    at org.h2.message.Message.getSQLException(Message.java:88) ~[h2-1.0.60.jar:1.0.60]
    at org.h2.message.Message.getInvalidValueException(Message.java:117) ~[h2-1.0.60.jar:1.0.60]
    at org.h2.jdbc.JdbcResultSet.checkColumnIndex(JdbcResultSet.java:2857) ~[h2-1.0.60.jar:1.0.60]
    at org.h2.jdbc.JdbcResultSet.get(JdbcResultSet.java:2880) ~[h2-1.0.60.jar:1.0.60]
[success] Compiled in 22ms

【问题讨论】:

  • 如果您可以包含getTables 的表定义以及相关联的元组/取消应用模型,那将很有帮助。
  • MTable 是一个由 slick 自己提供的元数据结构。 MTable不是我写的stackoverflow.com/questions/5442034/…
  • 我看到所有的元表都可以: val q = db.run(MTable.getTables).map(_.map(println)); println(Await.result(q, Duration.Inf))
  • 我想知道这是否是因为 h2mem 没有元表(我在这里使用持久化到磁盘 h2,现在需要去。:)
  • 你上面的代码给了我同样的错误信息。所以我想我应该尝试在持久化磁盘中使用 H2……或者也许是 postgresql 用于我的开发。

标签: scala slick slick-3.0


【解决方案1】:

H2版本太旧了。

将 H2 版本从 build.sbt 中的 1.0.60 更改为 1.3.176,异常将消失 - 测试将通过。 :)

【讨论】:

  • 非常感谢,我被困在这里很多天了。我在 Google 上搜索了“SBT h2 依赖项”,然后从搜索结果中复制粘贴了依赖项。我认为 SBT 应该有一个功能,它可以告诉您是否使用的是过时版本的库以及是否有更新版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多