我在寻找一种在生产和开发中进行不同迁移的方法。

我想用Maven创建一个Spring Web应用程序。
在开发中,我想更新数据库架构并加载测试数据。
在生产中,当部署新版本的应用程序时,我只希望更改架构,而不加载测试数据。

我的第一个想法是保存架构更新并将语句插入不同的文件夹。

我认为每个人都解决了这个问题,可以为我提供帮助,非常感谢。

最佳答案

基本上,您有两种选择:

您可以在flyway.locations属性中为迁移使用不同的位置,即:

测试

flyway.locations=sql/structure,sql/test

用于生产
flyway.locations=sql/structure

这样,您可以将测试数据包含在sql / test文件夹中。当然,您必须小心编号。

第二种选择(我更喜欢这种选择)是完全不在迁移中包含测试数据。

而是,以您想要的任何方式创建testdata并创建此数据的sql-dump,使您与迁移保持独立。

如果您有一个包含原始测试数据的单独数据库(实例,架构等),则此方法效果最好,在此过程中,您将每个迁移都应用到构建过程中。然后,此构建作业可以创建始终与当前迁移匹配的转储。

准备测试计算机时,首先应用迁移,然后加载匹配的转储的内容。

我认为这比第一个版本干净很多,特别是因为可以使用其他工具(您的应用程序)准备测试数据,而无需进行手工编码。

07-25 23:07
查看更多