未找到表“play_evolutions”

Posted

技术标签:

【中文标题】未找到表“play_evolutions”【英文标题】:Table "play_evolutions" not found 【发布时间】:2017-01-24 00:52:30 【问题描述】:

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

# 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`

播放框架不应该已经创建了这个吗?

版本:

//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

【问题讨论】:

Play 一直为我创建了play_evolutions 表。之前还有其他有趣的错误吗?听起来它正在尝试将问题写入数据库(update play_evolutions set last_problem ...)。您配置了哪些进化设置 (play.evolutions.*)? 我也遇到了同样的问题,我的只是一个教程应用,所以我正在使用 H2 DB 并部署到 heroku。它在本地运行良好,但在 heroku 上却不行。 好的,我已隔离问题,但无法调试... 哪里有上传隔离问题的好地方? 临时链接:dropbox.com/s/gwscnaa69r4w5b3/test-db.zip?dl=0 【参考方案1】:

我已经检查了 evolutions.default 包中的 1.sql,并且可能存在导致 table not found 的东西。

使用 mydb;

使用此语句,您的“工作模式”现在是 jdbc:h2:mem:play/mydb

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

解决方法很简单:

删除使用 mydb;

希望对你有帮助。

【讨论】:

以上是关于未找到表“play_evolutions”的主要内容,如果未能解决你的问题,请参考以下文章

选择出现多次的JSON对象

无法从抽象类中读取文件

新的 bigquery 表的“未找到:表”

内部连接出错 - 尽管存在表但未找到表

未找到 PrimeNG 样式表

错误显示“无法获取样式表 (#) 的文本:未找到具有给定 id 的样式表”,这是啥意思?