Play Framework 2.3如何重置数据库?

5
在Play 2.3.x版本的 Evolutions文档 中写道:在开发模式下,最简单的方法是删除您的开发数据库并从头开始重新应用所有迁移。然而,它没有提供如何执行此操作的说明。是否有某种activator命令可以使用来执行此操作? 如何重置和重新应用迁移?谢谢! 更新:我不想手动更改我的数据库,但似乎那是唯一的方法。
2个回答

2

如果您不关心数据库中的数据(务必确定),可以使用 SQL 命令(例如 "drop database name")直接删除数据库。一旦再次运行 "play run",如果遵循 Play 框架的标准,它应该会自动从 SQL 脚本重新创建表,因为根据文档所述:

"如果在 application.conf 中配置了数据库并且存在进化脚本,则进化会自动激活"


2
我认为没有这样的激活器命令可以重新应用所有演化。
演化包含上升和下降两个部分,其中:
1. 上升部分描述所需的转换。 2. 下降部分描述如何还原它们。当您第一次应用演化时,将应用上升部分。如果您通过实体进一步更改模式,则会在ebean中重新应用演化。
如果您想要还原,请创建一个新的dotsql文件,例如2.sql,其中包含所有删除语句的上升部分。
通过这种方式,在开发模式下,简单地清除您的开发数据库并从头开始重新应用所有演化通常更加简单。
我认为他们的意思是通过您的数据库GUI等手动删除所有数据库。
还要检查类似

1
谢谢提供链接。我宁愿不手动从数据库中删除表格,但似乎这是唯一的方法。 - KJ50
删除数据库并重新创建它比删除所有表要容易得多。 - i.am.michiel
在这种情况下,我更喜欢JPA而不是Ebean。在jpa中,您可以在persistence.xml中选择创建或更新选项。您可以根据需要进行更改。如果您不想使用jpa,则可以选择第二个选项,即我的答案中描述的sql。我不知道您何时或为什么要创建,因为ebean会直接通过Entity或dotsql文件更新模式。每次重新创建数据库都不是明智的选择。 - singhakash
@singhakash,我更倾向于坚持使用Ebean而不是转换到JPA。我想你提到的第二个选项应该可行。 - KJ50

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接