播放2.1框架不检测进化变化

时间:2013-04-06 17:47:47

标签: playframework-2.0 ebean playframework-evolutions

在将@ManyToMany连接表添加到两个模型(在本例中为User和Article模型[1])时,Play会正确检测这些更改并相应地修改1.sql [2]文件:

[1]
+    @ManyToMany
+    public List<User> authors;

+    @ManyToMany(mappedBy="authors")
+    public List<Article> authoredArticles;

[2]
+    create table articles_users (
+      articles_id                    bigint not null,
+      users_id                       bigint not null,
+      constraint pk_articles_users primary key (articles_id, users_id)
+    );

+    alter table articles_users add constraint fk_articles_users_articles_01 foreign key (articles_id) references articles (id);
+    alter table articles_users add constraint fk_articles_users_users_02 foreign key (users_id) references users (id);

# --- !Downs

+    drop table if exists articles_users cascade;

但是,在打开使用此关系的页面时,不会显示有关需要应用的Evolutions的消息,而是显示以下错误:

PersistenceException: Query threw SQLException:ERROR: relation "articles_users" does not exist

为什么Play没有检测到它已经对需要应用的数据库模式进行了更改?

1 个答案:

答案 0 :(得分:2)

检查play_evolutions表,如果已经存在id为1的行,则必须将sql文件重命名为2.sql或手动删除表。