代码之家  ›  专栏  ›  技术社区  ›  yiksanchan

用H2玩Slick(2.6.x):找不到表

  •  0
  • yiksanchan  · 技术社区  · 6 年前

    要重现错误,请查找 play-slick-todos

    play-slick-sample 使用Playframework和Slick实现todo list API端点。为了简化问题,我只实现 index 终结点。

    之后 sbt run 完成后,访问 localhost:9000 点击 中的终结点 Application

    [error] application -
    
    ! @797hp92i6 - Internal server error, for (GET) [/] ->
    
    play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[JdbcSQLException: Table "todo" not found; SQL statement:
    select "id", "content" from "todo" [42102-197]]]
        at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:251)
        at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:178)
        at play.core.server.AkkaHttpServer$$anonfun$1.applyOrElse(AkkaHttpServer.scala:363)
        at play.core.server.AkkaHttpServer$$anonfun$1.applyOrElse(AkkaHttpServer.scala:361)
        at scala.concurrent.Future.$anonfun$recoverWith$1(Future.scala:413)
        at scala.concurrent.impl.Promise.$anonfun$transformWith$1(Promise.scala:37)
        at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
        at akka.dispatch.BatchingExecutor$AbstractBatch.processBatch(BatchingExecutor.scala:55)
        at akka.dispatch.BatchingExecutor$BlockableBatch.$anonfun$run$1(BatchingExecutor.scala:91)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
    Caused by: org.h2.jdbc.JdbcSQLException: Table "todo" not found; SQL statement:
    select "id", "content" from "todo" [42102-197]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
        at org.h2.message.DbException.get(DbException.java:179)
        at org.h2.message.DbException.get(DbException.java:155)
        at org.h2.command.Parser.readTableOrView(Parser.java:5920)
        at org.h2.command.Parser.readTableFilter(Parser.java:1430)
        at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:2138)
        at org.h2.command.Parser.parseSelectSimple(Parser.java:2287)
        at org.h2.command.Parser.parseSelectSub(Parser.java:2133)
        at org.h2.command.Parser.parseSelectUnion(Parser.java:1946)
        at org.h2.command.Parser.parseSelect(Parser.java:1919)
    

    我知道如何创建表:用于 todos , Await.result(db.run(todos.schema.create)) 做这个工作。但我不知道该把它们放在哪里,我相信这应该通过巧妙的手段来实现。

    感谢您的帮助。谢谢您!

    versions:
    play - 2.6.18
    scala - 2.12.6
    h2 - 1.4.197
    play-slick - 3.0.1
    play-slick-evolutions - 3.0.1
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   yiksanchan    6 年前

    The diff 回答问题。我应该添加一个进化脚本。