我在ORCID上使用liquibase 3.2.0,并且发现它非常有用。
我们现在有超过200个变更集在原始模式之上。
这些在单元测试中运行多次,因为我们使用的是内存数据库(hsqldb)。
我想通过从当前模式中创建一个新的install.xml来"重置"liquibase,这样我们就不必每次都运行所有的changeset。
但是,生产数据库(postgres)有一个databasechangelog表,其中包含所有旧的changeset,因此它将尝试应用新的install.xml。
如何从新的install.xml重新开始而不会对生产造成问题?
从头开始重新启动一个changeLog等同于在现有项目中添加liquibase,这在这里的文档中有讨论
但是,我通常不建议重新设置您的changeLog,因为在性能方面,这样做的成本通常大于任何收益。您的200changeset变更日志已经过全面测试,您知道它是正确的,而手动或使用generateChangeLog重新生成的内容很容易存在可能导致问题的微小差异。对于现有的数据库,解析changelog文件并将其与databasechangelog的内容进行比较的启动成本非常低,与changeset的数量无关。
对于一个新数据库,特别是内存数据库,DDL操作通常非常快,通过200个changeSets来构建数据库的速度可能与50个changeSets构建数据库的速度没有太大区别。
如果存在性能差异,我通常看到的是有一些孤立的变化集是问题,例如创建索引然后删除它然后再次创建它。我建议寻找任何可能是问题的更改集,并小心地删除或合并它们,而不是大规模重做更改日志。