2012-06-09 24 views
3

我試圖創建(根據遊戲2.0的樣本代碼) 一個簡單的控制器/模型,並得到了有關數據庫的進化消息:播放框架2.0:H2 DB進化用一個簡單的模型

Database 'default' needs evolution! 

An SQL script will be run on your database - "Apply this script now" 

1 # --- Rev:1,Ups - fbdc2fd 
2 create table group (
3 id      bigint not null, 
4 name      varchar(255), 
5 description    varchar(255), 
6 due_date     timestamp, 
7 constraint pk_group primary key (id)) 
8 ; 
9 
10 create sequence group_seq; 

但在點擊按鈕時,我已經得到了以下錯誤消息:

Database 'default' is in inconsistent state! 

An evolution has not been applied properly. Please check the problem and resolve it manually before making it as resolved 

We got the following error: SQLステートメントに文法エラーがあります "CREATE TABLE GROUP[*] (ID BIGINT NOT NULL, NAME VARCHAR(255), DESCRIPTION VARCHAR(255), DUE_DATE TIMESTAMP, CONSTRAINT PK_GROUP PRIMARY KEY (ID)) "; 期待されるステートメント "identifier" Syntax error in SQL statement "CREATE TABLE GROUP[*] (ID BIGINT NOT NULL, NAME VARCHAR(255), DESCRIPTION VARCHAR(255), DUE_DATE TIMESTAMP, CONSTRAINT PK_GROUP PRIMARY KEY (ID)) "; expected "identifier"; SQL statement: create table group (id bigint not null, name varchar(255), description varchar(255), due_date timestamp, constraint pk_group primary key (id)) [42001-158] [ERROR:42001, SQLSTATE:42001], while trying to run this SQL script: 

1# --- Rev:1,Ups - fbdc2fd 
2 
3 create table group (
4 id      bigint not null, 
5 name      varchar(255), 
6 description    varchar(255), 
7 due_date     timestamp, 
8 constraint pk_group primary key (id)) 
9 ; 
10 
11 create sequence group_seq; 

我的配置文件

#DB setting 
db.default.driver=org.h2.Driver 
db.default.url="jdbc:h2:mem:play" 

# Ebean configuration 
ebean.default="models.*" 

我控制器

public class Application extends Controller { 

    /** 
    * 
    * @return 
    */ 
    public static Result index() { 

     Group g = new Group("New group Test","This is a test !"); 
     g.save(); 

    return ok(index.render("Render page")); 
    } 

} 

最後我的模型:

@Entity 
public class Group extends Model { 

    public static Finder<Long,Group> find = new Finder (Long.class, Group.class); 

    @Id 
    public Long id; 

    @Required 
    public String name; 

    @Required 
    public String description; 

    @DateTime(pattern = "MM/dd/yy") 
    public Date dueDate; 


    /** 
    * ToString method 
    */ 
    public String toString() { 
     return "Group(" + id + ") in project " + name; 
     } 


    /** 
    * Constructor 
    * @param name 
    * @param description 
    */ 
    public Group(String name, String description){ 
      this.name=name; 
      this.description=description; 
    } 

} 

已經有人遇到同樣的問題? 謝謝!

回答

5

這可能是您的表(組)的名稱是問題,因爲它是一個SQL關鍵字。嘗試引用表名(「組」)或測試如果使用不同的表名稱會發生​​什麼。

+0

謝謝! Db進化已成功完成。謝謝 ! – johann

+0

謝謝!我也有同樣的問題! –

1

組是一個關鍵字,所以找到您的模型的其他名稱比Group,它將工作。

順便說一句也解決您的Finder:

public static Finder<Long,MyGroup> find = new Finder<Long,MyGroup> (Long.class, MyGroup.class); 

您也可以迫使其他表的名稱,以避免衝突的關鍵字,但我本人來說改變模型名稱,並使用表和模型。

@Entity 
@Table(name = "group_table") 
public class Group extends Model { 
    ... 
} 
+0

感謝您的建議〜我修復了我的Finder並使用註釋@Table來定義表名 – johann