似乎每当我更改模型时,Play Framework 都会要求我运行一个脚本来删除我的整个架构并重新创建它。显然这不适用于生产,那么在生产中处理这个问题的正确方法是什么?
请注意,我使用的是 ebean 和 Postgres,并托管在 heroku 上。
似乎每当我更改模型时,Play Framework 都会要求我运行一个脚本来删除我的整个架构并重新创建它。显然这不适用于生产,那么在生产中处理这个问题的正确方法是什么?
请注意,我使用的是 ebean 和 Postgres,并托管在 heroku 上。
不幸的是Ebean
,只能创建CREATE DDL
(而不是UPDATE DDL
)(正如他们的小组所回答的那样),因此您需要尽快切换到手动进化。
一些规则:
1.sql
由它创建的进化,它会重新创建整个 DDL1.sql
并开始使用下一个数字等编写自己的进化2.sql
。3.sql
在切换到手动进化之前尝试放置尽可能多的模型/字段。最大的部分将由插件自动完成。ALTERS
现有的表/列而不是 DROP/CREATE,它们应该同时具有:Ups
和Downs
对于每个更改。事实上,有时使用 DB gui 修改 DB 结构更容易,无论如何它主要适用于单个开发人员......当您需要与其他开发人员共享代码时,编写演变将是更好的选择。
如果一段时间后您将添加新模型的下一个“大”部分,您可以再次启用临时自动 DDL 并使用本地 git 来复制新部分。然后恢复到自己的革命并粘贴由Ebean插件生成的新部分。
Biesior基本上总结得很好。但是,作为 Play 的初学者,我发现用一个具体的例子进行更多的说明可能会有所帮助。
首先,以下示例适用于 Java。
假设您添加了一个新字段
public String dum_str;
在你的模型中。然后,您将需要这样的2.sql
下conf/evolutions/
:
# --- !Ups
ALTER TABLE dum ADD COLUMN dum_str VARCHAR(255);
# --- !Downs
ALTER TABLE dum DROP dum_str;
我希望这会有所帮助。