1

我使用的遊戲框架,並增加模型的應用程序後,發生下列錯誤:遊戲框架:用戶缺少特權或找不到對象:PLAY_EVOLUTIONS

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.*" 

我只有一個表(Users),我也有一個模型(User)。我的應用程序有什麼問題?

ADD我發現我的表Users沒有創造我介紹User模型

我演進(1.SQL)後:

# Users schema 

# --- !Ups 

CREATE TABLE User (
    id bigint(20) NOT NULL AUTO_INCREMENT, 
    first_name varchar(255) NOT NULL, 
    last_name varchar(255) NOT NULL, 
    nick_name varchar(255) NOT NULL, 
    PRIMARY KEY (id) 
); 

# --- !Downs 

DROP TABLE User; 

地址我創建沒有機型的新應用,並且出現以下錯誤

[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:我分享我的消息來源:https://github.com/skayred/play-hsqldb-test

+0

請將您的進化文件的內容添加到問題 –

+0

請參閱編輯請 – skayred

回答

3

User是HSQLDB一個reserved keyword。你可以用戶代替,但我建議你重命名錶到別的東西,並在Table註解提供表的名稱類似如下:

@Entity 
@Table(name = "my_user_table") 
public class User { .... } 

編輯ON UPDATE:

嘗試應用Evolution時出現錯誤。由於演變來自於SQL文件,即使你沒有模式,如果存在SQL運行它們(的演變及模型類的用途相關的,但玩考慮每一個獨立組件)

錯誤意味着要麼數據庫無法訪問或您的用戶沒有權限。我看到您正在嘗試使用與以前相同的數據庫。我會做以下事情:

  • 創建一個新項目,從頭開始,除了產生一個play new之外,沒有任何文件。
  • 創建一個新的數據庫。不要重複使用前一個。
  • 將新的數據庫詳細信息添加到該新項目中
  • 嘗試啓動該應用程序。它可能在這裏失敗,那麼你知道你的數據庫細節是錯誤的。
  • 如果有效,請將Evolution文件添加到您的新項目中
  • 嘗試再次運行該項目。如果失敗,你會知道它是Evolution文件是錯誤的(語法錯誤)
  • 添加模型類
  • 嘗試再次運行該項目。如果失敗,您知道您的模型與數據庫不匹配。

按順序執行這些步驟可以幫助您找到錯誤。

+0

模型怎麼樣?我是否也重命名了它? – skayred

+1

@skayred不,這就是'@ Table'註釋的用途。 – Carsten

+0

我已經創建了沒有模型的新應用程序,並且得到了新的錯誤 - 請參閱編輯 – skayred

相關問題