将多个 liquibase 变更集合并为一个

Combine multiple liquibase changeset to a single one

我正在使用 liquibase 来管理我的数据库,并使用创建所有基本表的单个变更集启动项目。现在我的客户想要更改该数据库并且我正在启动其他变更集,但我担心它会在一段时间内变得一团糟(例如,对于开发人员来说不容易阅读),因为第一个变更集现在不是真实的表示数据库架构。

示例:

<changeset id="1" author="natty">
  <createTable tableName="my_table">
    <column name="my_column" type="integer" />
  </createTable>
</changeset>
<changeset id="2" author="natty">
  <addColumn tableName="my_table">
    <column name="another_column" type="varchar(10)" />
  </addColumn>
</changeset>
[...]
<changeset id = "100" author="natty">
 ...
</changeset>

我现在需要全面了解所有变更集才能理解我的数据库模式。

如何避免拥有多个变更集?

你不应该改变你的变更集。您应该只添加新的变更集。改变变更集是一种反模式。

如果您需要向数据库模式添加更改,您应该保留现有的变更集并编写新的。

如果您不想让您的 changeLog 文件太大,则创建一个父 changeLog 文件和一些多个子 changeLog 文件(参见 include or includeAll 标签)。您可以创建一个新的子 changeLog 文件,例如每个月、每周或按其他逻辑。

如果你真的想要 trim 你的 changeLog,我建议你先阅读 "Trimming Changelogs" 文章。