database-migration - 如何在自动化测试中处理数百个 FlywayDB 迁移

标签 database-migration flyway

我们正在将 Flyway DB 用于一个长期项目,该项目目前有超过 100 个迁移。

在我们的自动化测试中,我们希望在运行测试之前重置数据库,以便我们从数据库中的已知状态开始,并测试迁移。

我们遇到的问题是运行超过 100 个迁移太慢。我们认为运行创建当前模式的单个脚本,而不是通过所有迁移来发展它,会更快。而且我们不需要从版本 n 升级到 n+1(对于任意 n)的能力,因为我们拥有的唯一生产数据库已经是最新的。

是否有任何方法可以用一个“快照”迁移来“替换”旧的迁移,只需一个脚本即可将数据库从版本 0 迁移到版本 100?我想我们可以删除直到最后一个的所有迁移(假设它是编号 100),并将迁移编号 100 替换为在一个脚本中创建整个数据库的迁移。还有其他想法吗?

我知道我们可以将数据库模式保留在测试中,并在运行它们之前删除数据,但这很困难,因为某些行(只有几行)就像在迁移期间插入的常量,并且只是清除所有内容会使数据库处于不一致的状态。

提前致谢!

最佳答案

您可以按照此处描述的流程来压缩现有迁移:http://flywaydb.org/documentation/existing.html

关于database-migration - 如何在自动化测试中处理数百个 FlywayDB 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30436910/

相关文章:

mysql - 我们如何合并两个具有相同模式的数据库?

php - Phinx - php 应用程序的数据库迁移 - postgreSQL 模式不起作用

mysql - 使用新模式将 mysql 数据迁移到多表

ruby-on-rails - 问题将数据库迁移到 Heroku - PG::UndefinedTable: ERROR: relation "users"does not exist

Flyway 输出到 SQL 文件

Spring boot + flyway + H2 in memory :Caused by: org. h2.jdbc.JdbcSQLException: Table "xxxx"not found; SQL语句:

scala - 关注 Play 的演变?

oracle - Flyway 自定义清洁脚本的可能性

spring - FlywayAutoConfiguration 没有 "see"数据源

mysql - H2 jdbc异常 - 奇数个字符的十六进制字符串