Play Framework SQL evolution脚本 - 整数列错误?

时间:2014-01-15 13:08:52

标签: mysql sql playframework ebean playframework-2.2

我收到以下错误:

  

我们收到以下错误:您的SQL语法出错;   检查与您的MySQL服务器版本对应的手册   正确的语法使用'整数非空,约束pk_checkpoint附近   主键(id))'在第9行[错误:1064,SQLSTATE:42000],而   试图运行这个SQL脚本:

生成的SQL:

1 # --- Rev:1,Ups - 491c235

2

3 create table checkpoint (

4 id                        bigint auto_increment not null,

5 name                      varchar(80) not null,

6 longitude                 double not null,

7 latitude                  double not null,

8 points                    integer not null,

9 message                   varchar(160) not null,

10 scenario_id               bigint,

11 index                     integer not null,

12 constraint pk_checkpoint primary key (id))

13;

我的模特:

@Entity
public class Checkpoint extends Model {

    @Id
    public Long id;

    @Column(length = 80, nullable = false)
    public String name;

    @Column(nullable = false)
    public double longitude;

    @Column(nullable = false)
    public double latitude;

    @Column(nullable = false)
    public int points;

    @Column(length = 160, nullable = false)
    public String message;

    @OneToMany(cascade = CascadeType.ALL)
    public List<CheckpointAnswer> possibleAnswers = new ArrayList<CheckpointAnswer>();

    @ManyToOne(cascade = CascadeType.PERSIST)
    public Scenario scenario;

    @Column(nullable = false)
    public int index;
}

怎么了?

1 个答案:

答案 0 :(得分:0)

要添加上述内容,并且不要贬低避免保留字可能是一个好主意,如果您真的希望将列称为索引,可以使用MySQL工作台或sql工具手动创建表选择使用列名称后面的反引号(`index`)。至少在Scala / anorm中,这不会改变您在源代码中引用列的方式。 (对于跨数据库兼容性,将MySQL配置为使用双引号而不是反引号可能也是一个好主意。进一步讨论here。)