Liquibase:变更集自动生成 ID

jam*_*jam 6 liquibase

如何使用 liquibase 自动生成变更集 ID?

我不想手动设置每个变更集的 ID,有没有办法自动设置?

dag*_*dag 3

我不认为生成的 id 是个好主意。原因是liquibase使用changeSet id来计算校验和(除了作者和文件名)。因此,如果您在其他更改集之间插入更改集,则所有后续更改集的校验和都会更改,并且您将收到大量警告/错误。

无论如何,如果您仍然想生成 Id,我可以想到这些解决方案:

  1. 创建您自己的ChangeLogParser

如果您自己解析 ChangeLog,则可以根据需要随意生成 id。缺点是您必须为变更日志提供自定义 Xml 架构。Liquibase 的架构对changeSet id 有限制(必需)。使用新模式,您可能需要对解析器进行大量调整。或者,您可以选择其他更改日志格式(YAML、JSON、Groovy)。他们的解析器可能更容易定制,因为他们不需要该模式定义。

  1. 做一些预处理

您可以编写一个简单的 xslt(Xml 转换),该 xslt(Xml 转换)可以从没有任何内容的文件生成带有changeSet id 的changeLog。

  1. 使用时间戳作为 Id

这是我的建议。它没有按照您提出的方式解决问题,但它简单、一致,提供了附加信息,并且对于其他数据库迁移工具也是一个很好的实践http://www.jeremyjarrell.com/using-flyway-db-with -分布式版本控制/