Slick MTable.getTables总是失败,并出现意外异常[JdbcSQL异常:参数ColumnIndex[90008-60]的值7无效]异常、意外、参数、getTables

2023-09-04 02:18:57 作者:岁月悠悠长

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

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

推荐答案

H2版本太旧。

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