一直在尝试 Play 框架并正在阅读教程。但是我不断收到一个非常具体的错误-
[PersistenceException:查询抛出 SQLException:找不到表“TASK”;SQL 语句:select t0.id c0, t0.label c1 from task t0 [42102-168] 绑定值:[null] 查询为:select t0.id c0, t0.label c1 from task t0 ]
...相关代码
23 public static List<Task> all() {
24 return find.all();
25 }
阅读论坛我尝试停止并重新启动 H2 db,但它似乎不起作用。
更新:
如果需要,我假设 Play 教程会谈到在 H2 中创建一个表。但正如评论者所说,我通过控制台进行了检查,该表不存在。我将尝试通过创建表和派生架构来继续前进,但如果我没有遗漏任何内容,则需要更新教程。我的假设不好。
http://www.playframework.com/documentation/2.1.0/JavaTodoList
Apple MacBook Pro Retina 10.7.5,Java 6
更新 2:
运行以下但仍然得到相同的错误
create table task (id varchar(256) primary key, label varchar(256));
我的应用程序.conf
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
db.default.user=sa
db.default.password=""
...
ebean.default="models.*"
evolutionplugin=disabled
更新 3:
感谢那些回复的人。我的 application.conf 中确实有 ebean.default 值设置。Evolution 插件已禁用。刚刚学习 Play/H2 似乎我的应用程序(和相关配置)无法访问 H2 数据库。我会启动 H2 控制台并添加表“TASK”,但运行示例应用程序仍然会出现错误(是的,我也致力于 db)。我也尝试在没有 H2 控制台的情况下运行该应用程序,但这在逻辑上不起作用,因为 H2 TASK 表没有持久化。目前还不确定还有什么要查看的,但我确信这很明显......我希望。
更新 4:修复
了启用进化插件的问题。并不是说这对我现在有意义(必须稍微探索一下进化)。所以简而言之,教程应该告诉人们,要让 Java TODO 工作,他们需要从 play 命令行进入 h2-console 并运行 create table,在启动应用程序时启动实例。
抱歉,这次更新花了一些时间。在其他问题发生后才回到这个问题。