scala - 找不到表 "play_evolutions"

标签 scala playframework playframework-evolutions

我有一个这样配置的基本开发数据库:

# Default database configuration using H2 database engine in an in-memory mode
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play;DB_CLOSE_DELAY=-1;MODE=MYSQL;DATABASE_TO_UPPER=FALSE"

我在 conf/evolutions/default/1.sql 中添加了一个脚本来从数据库创建表

当使用 sbt run 启动应用程序并转到任何页面时,Play 要求我应用脚本 1.sql。按下按钮后,出现以下错误:

JdbcSQLException: Table "play_evolutions" not found; SQL statement: update play_evolutions set last_problem = ? where id = ? [42102-192]`en`

play 框架不应该已经创建了吗?

版本:

//project/plugins.sbt
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.10")

//build.sbt
lazy val root =
  (project in file("."))
    .enablePlugins(PlayScala)

scalaVersion := "2.11.8"

libraryDependencies += jdbc
libraryDependencies += evolutions

最佳答案

我检查了 evolutions.default 包中的 1.sql,可能有一些东西导致 table not found 事情。

USE mydb;

有了这条语句,您的“工作模式”现在是 jdbc:h2:mem:play/mydb

但是 play_evolutions 表是在根 jdbc:h2:mem:play 下创建的,在 jdbc:h2:mem:play/mydb 下没有任何意义 调用了 play_evolutions,这导致了错误。

解决方法很简单:

remove USE mydb;

希望对您有所帮助。

关于scala - 找不到表 "play_evolutions",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41818273/

相关文章:

java - Play Framework : tool to generate Evolutions scripts?

scala - 在 play-framework 中运行测试时如何应用 play-evolutions?

scala - 为什么在显示运算符之后无法加入?

java - 如何覆盖 Scala 中的 toString 方法并将其替换为动态文本

scala - 在 Scala 中的隐式实例中强制执行优先级

scala - 使用scala格式,如何从playframework中排除 View 文件

java - 如何删除 Play Framework 2.5.x/Java 中的( session )cookie

postgresql - 未应用 Play 2.6 进化数据库更改

playframework - Play Framework 2.3 如何重置数据库?

scala - "Select In"使用 Slick