DB Evolution in Play Framework 2.0



在play 1.0中,当我们更改变量类型时,或者例如在Model play中从@OneToMany更改为@ManyToMany时,会自动处理更改,但使用play 2.0进化脚本会删除数据库。有什么方法可以让Play 2.0在不删除DB的情况下应用更改?

是的,有一种方法。您需要禁用1.sql文件的自动重新创建,并开始编写包含ALTERS而不是CREATES的自己的演进——用2.sql3.sql等进行编号。

在实践中,这意味着,如果您使用单个数据库,您也可以。。。使用您喜欢的DB GUI管理数据库的表和列。只有当您不能使用GUI时(主机不允许外部连接,也没有任何GUI),或者当您计划在单独的数据库上运行应用程序的许多实例时,演进才有用。否则,手动编写语句可能会比使用GUI更复杂。

提示:有时,如果我不确定是否在手动进化中添加了所有必需的关系和约束,我会删除它们(在git控制的文件夹下!),并在启用Ebean插件的情况下运行应用程序,并保存建议的1.sql,但我不会应用更改。稍后,我将使用git恢复我的演进,并将保存的自动生成文件和convertCREATE语句与ALTER进行比较。如果不使用第三方软件,就没有更好的选择来管理更改。