Playframework 播放框架:用户缺少权限或未找到对象:播放演化

Playframework 播放框架:用户缺少权限或未找到对象:播放演化,playframework,playframework-2.0,hsqldb,playframework-evolutions,Playframework,Playframework 2.0,Hsqldb,Playframework Evolutions,我正在使用Play Framework,将模型添加到应用程序后出现以下错误: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PLAY_EVOLUTIONS org.hsqldb.jdbc.Util.sqlException(Unknown Source) 我的配置: db.queen.driver=org.hsqldb.jdbcDriver db.queen.url="jdbc:hsql

我正在使用Play Framework,将模型添加到应用程序后出现以下错误:

java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PLAY_EVOLUTIONS
 org.hsqldb.jdbc.Util.sqlException(Unknown Source)
我的配置:

db.queen.driver=org.hsqldb.jdbcDriver
db.queen.url="jdbc:hsqldb:file:queen-db;shutdown=true;hsqldb.write_delay=false;"
db.queen.user=sa
db.queen.password=""

ebean.queen="models.*"
我只有一个表(
用户
),还有一个模型(
用户
)。我的申请有什么问题

添加我发现我的表
用户
不是在我引入
用户
模型之后创建的

我的进化(1.sql):

添加我创建了没有模型的新应用程序,出现以下错误

[info] play - database [default] connected at jdbc:hsqldb:file:queen-db;shutdown=true;hsqldb.write_delay=false;
[warn] application - play_evolutions table already existed
[error] application -

! @6emindcmh - Internal server error, for (GET) [/users] ->

play.api.UnexpectedException: Unexpected exception[SQLSyntaxErrorException: user lacks privilege or object not found: PLAY_EVOLUTIONS]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$1.apply(ApplicationProvider.scala:142) ~[play_2.10.jar:2.1.1]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$1.apply(ApplicationProvider.scala:106) ~[play_2.10.jar:2.1.1]
at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:106) ~[play_2.10.jar:2.1.1]
at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:104) ~[play_2.10.jar:2.1.1]
at scala.util.Either$RightProjection.flatMap(Either.scala:523) [scala-library.jar:na]
Caused by: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PLAY_EVOLUTIONS
at org.hsqldb.jdbc.Util.sqlException(Unknown Source) ~[hsqldb-2.2.9.jar:2.2.9]
at org.hsqldb.jdbc.Util.sqlException(Unknown Source) ~[hsqldb-2.2.9.jar:2.2.9]
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source) ~[hsqldb-2.2.9.jar:2.2.9]
at org.hsqldb.jdbc.JDBCStatement.executeQuery(Unknown Source) ~[hsqldb-2.2.9.jar:2.2.9]
at com.jolbox.bonecp.StatementHandle.executeQuery(StatementHandle.java:503) ~[bonecp.jar:0.7.1.RELEASE]
at play.api.db.evolutions.Evolutions$.executeQuery(Evolutions.scala:118) ~[play-jdbc_2.10.jar:2.1.1]
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: PLAY_EVOLUTIONS
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.2.9.jar:2.2.9]
at org.hsqldb.error.Error.error(Unknown Source) ~[hsqldb-2.2.9.jar:2.2.9]
at org.hsqldb.SchemaManager.getTable(Unknown Source) ~[hsqldb-2.2.9.jar:2.2.9]
at org.hsqldb.ParserDQL.readTableName(Unknown Source) ~[hsqldb-2.2.9.jar:2.2.9]
at org.hsqldb.ParserDQL.readTableOrSubquery(Unknown Source) ~[hsqldb-2.2.9.jar:2.2.9]
at org.hsqldb.ParserDQL.XreadTableReference(Unknown Source) ~[hsqldb-2.2.9.jar:2.2.9]
我的应用程序配置:

application.langs="en"

db.default.driver=org.hsqldb.jdbcDriver
db.default.url="jdbc:hsqldb:file:queen-db;shutdown=true;hsqldb.write_delay=false;"
db.default.user=sa
db.default.password=""

ebean.default="models.*"
PS:我已经分享了我的资料来源:

用户
是HSQLDB中的一员。您可以使用用户
“user”
,但我建议您将表重命名为其他名称,并在
注释中提供表名,如下所示:

@Entity
@Table(name = "my_user_table")
public class User { .... }
更新时编辑:

您在尝试应用演进时会出现错误。由于演化来自SQL文件,即使您没有模型,也会在SQL存在的情况下运行它们(演化和模型类在目的上是相关的,但Play认为每一个都是独立的组件)

该错误表示无法访问数据库或您的用户没有权限。我看到您正在尝试使用与以前相同的数据库。我会做以下几件事:

  • 从头开始创建一个新项目,除了
    play new
    生成的文件外,没有其他文件
  • 创建一个新的数据库。不要重复使用前一个
  • 将新数据库详细信息添加到该新项目中
  • 尝试启动应用程序。它可能在这里失败,那么您就知道您的数据库详细信息是错误的
  • 如果可行,请将Evolution文件添加到新项目中
  • 尝试再次运行该项目。如果失败,您将知道是Evolution文件出错(语法错误)
  • 添加模型类
  • 尝试再次运行该项目。如果失败,您就知道您的模型与数据库不匹配

按顺序执行这些步骤有助于找到错误。

请将您的进化文件的内容添加到问题中,模型如何?我也重命名了吗?@skayred不,这就是
@Table
注释的目的。我创建了没有模型的新应用程序,并出现了新错误-请参阅edit。因此,当我尝试创建evolution时,即使我尝试使用其他名称,也会发生此错误。怎么了?@skayred如果它们发生在创建演进时,如果连接细节都正确,那么语法可能是错误的。尝试在文件中添加基本命令,只需在系统表中选择一个。如果失败,则可能是连接详细信息,否则是当前连接的语法。
@Entity
@Table(name = "my_user_table")
public class User { .... }