一直在试用Play框架并正在完成教程。但是我不断收到一个非常具体的错误 -
[PersistenceException:Query抛出SQLException:表“TASK”未找到; SQL语句:从任务t0选择t0.id c0,t0.label c1 [42102-168]绑定值:[null]查询为:从任务t0选择t0.id c0,t0.label c1]
...相关代码
23 public static List<Task> all() {
24 return find.all();
25 }
阅读论坛我试图停止并重新启动H2数据库但它似乎不起作用。
更新:
我假设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));
我的application.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 db。我会启动H2控制台并添加表'TASK'但运行示例应用程序仍然会给出错误(是的我也承诺了db)。我也尝试在没有H2控制台的情况下运行应用程序,但逻辑上不起作用,因为H2 TASK表没有持久化。在这一点上不确定还有什么可以看,但我确信这很明显......我希望。
更新4:已修复
启用evolution插件有效。这并不是说现在这对我有意义(必须稍微探索一下进化)。简而言之,本教程应告诉人们,为了使Java TODO正常工作,他们需要从play命令行进入h2-console并运行create table,在启动应用程序时启动实例。
抱歉,此更新需要一些时间。在其他问题搁置后再回到这一点。
答案 0 :(得分:1)
您尝试使用evolutionplugin = enable更新evolutionplugin = disabled,然后它应该可以正常工作。