【发布时间】:2014-03-31 09:50:54
【问题描述】:
我正在寻找一种在生产和开发中进行不同迁移的方法。
我想用 Maven 创建一个 Spring Web 应用程序。 在开发中,我想更新数据库模式和负载测试数据。 在生产中部署新版本的应用程序时,我只想更改架构而不加载测试数据。
我的第一个想法是保存架构更新并将语句插入不同的文件夹。
我想每个人都解决了这个问题并且可以帮助我,非常感谢。
【问题讨论】:
标签: maven database-migration flyway
我正在寻找一种在生产和开发中进行不同迁移的方法。
我想用 Maven 创建一个 Spring Web 应用程序。 在开发中,我想更新数据库模式和负载测试数据。 在生产中部署新版本的应用程序时,我只想更改架构而不加载测试数据。
我的第一个想法是保存架构更新并将语句插入不同的文件夹。
我想每个人都解决了这个问题并且可以帮助我,非常感谢。
【问题讨论】:
标签: maven database-migration flyway
基本上,您有两种选择:
您可以在 flyway.locations 属性中为您的迁移使用不同的位置,即:
用于测试
flyway.locations=sql/structure,sql/test
用于生产
flyway.locations=sql/structure
这样,您将测试数据包含在 sql/test 文件夹中。当然,您必须注意编号。
第二个选项(我更喜欢的那个),是根本不在您的迁移中包含测试数据。
相反,以您想要的任何方式创建您的测试数据,并为此数据创建一个 sql-dump,将其与迁移分开。
如果您有一个包含原始测试数据的单独数据库(实例、架构等),这种方法效果最好,您可以在其中应用每个迁移作为构建过程的一部分。然后,此构建作业可以创建一个始终与当前迁移匹配的转储。
在准备测试机器时,首先应用迁移,然后加载匹配转储的内容。
我认为这比第一个版本干净得多,尤其是因为您的测试数据可以使用其他工具(您的应用程序)准备好,而无需手动编码。
【讨论】: