Възпроизвеждане на скрипт за еволюция на Framework SQL - грешка с колона с цели числа?

Получих следната грешка:

Получихме следната грешка: Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на MySQL сървър за правилния синтаксис, който да използвате близо до 'integer not null, constraint 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;
}

Какво не е наред?


person pmichna    schedule 15.01.2014    source източник
comment
индексът е запазена дума, опитайте да я промените леко.   -  person dwjv    schedule 15.01.2014
comment
Благодаря, това реши проблема ми.   -  person pmichna    schedule 15.01.2014


Отговори (1)


За да добавите към горното и да не омаловажавате факта, че избягването на запазени думи вероятно е добра идея, ако наистина искате колоната да се нарича индекс, можете ръчно да създадете таблицата с MySQL workbench или вашия sql инструмент по избор, като използвате обратна отметка около името на колоната (`индекс`). Поне в Scala/anorm това не променя начина, по който се отнасяте към колоната в изходния код. (За съвместимост на различни бази данни конфигурирането на MySQL да използва двойни кавички вместо обратни тикчета вероятно също би било добра идея. Допълнителна дискусия тук.)

person wwkudu    schedule 16.01.2014