生成变更日志时更小的变更集
Smaller Changesets when Generating Changelogs
是否可以生成变更日志,将变更集合并在一起?
像这样:
<changeSet author="Author" id="1">
<dropNotNullConstraint columnDataType="varchar(255)" columnName="name" tableName="table"/>
<dropNotNullConstraint columnDataType="varchar(255)" columnName="phone" tableName="table"/>
<dropNotNullConstraint columnDataType="bigint" columnName="email" tableName="table"/>
</changeSet>
而不是这个:
<changeSet author="Author" id="1">
<dropNotNullConstraint columnDataType="varchar(255)" columnName="name" tableName="table"/>
</changeSet>
<changeSet author="Author" id="2">
<dropNotNullConstraint columnDataType="varchar(255)" columnName="phone" tableName="table"/>
</changeSet>
<changeSet author="Author" id="3">
<dropNotNullConstraint columnDataType="bigint" columnName="email" tableName="table"/>
</changeSet>
如果是这样,您可以选择自定义范围吗? (例如 给定 table 中的所有更改都组合在一起, 等 )。如果不是,是否有 'best practice' 避免手动分组的理由?
如果你的意思是命令 generateChangeLog 那么不,没有将所有更改放在一个 changeLog
中的选项。但是,您可以根据需要以编程方式创建它。
Liquibase 应根据 changeSet
进行更改,因为每个 changeSet
都在一个事务中执行 read here。因此,如果您在一个 changeSet
中包含大量更改并且执行该 changeSet
失败,您将更难找到失败的更改。最好按 changeSet
处理更改。
注意: 有时我也会对每个 changeSet
使用多个更改(例如 table 的备注(注释)或 DML(数据)修改) 但我更喜欢每个 changeSet 有一个 DDL。
是否可以生成变更日志,将变更集合并在一起?
像这样:
<changeSet author="Author" id="1">
<dropNotNullConstraint columnDataType="varchar(255)" columnName="name" tableName="table"/>
<dropNotNullConstraint columnDataType="varchar(255)" columnName="phone" tableName="table"/>
<dropNotNullConstraint columnDataType="bigint" columnName="email" tableName="table"/>
</changeSet>
而不是这个:
<changeSet author="Author" id="1">
<dropNotNullConstraint columnDataType="varchar(255)" columnName="name" tableName="table"/>
</changeSet>
<changeSet author="Author" id="2">
<dropNotNullConstraint columnDataType="varchar(255)" columnName="phone" tableName="table"/>
</changeSet>
<changeSet author="Author" id="3">
<dropNotNullConstraint columnDataType="bigint" columnName="email" tableName="table"/>
</changeSet>
如果是这样,您可以选择自定义范围吗? (例如 给定 table 中的所有更改都组合在一起, 等 )。如果不是,是否有 'best practice' 避免手动分组的理由?
如果你的意思是命令 generateChangeLog 那么不,没有将所有更改放在一个 changeLog
中的选项。但是,您可以根据需要以编程方式创建它。
Liquibase 应根据 changeSet
进行更改,因为每个 changeSet
都在一个事务中执行 read here。因此,如果您在一个 changeSet
中包含大量更改并且执行该 changeSet
失败,您将更难找到失败的更改。最好按 changeSet
处理更改。
注意: 有时我也会对每个 changeSet
使用多个更改(例如 table 的备注(注释)或 DML(数据)修改) 但我更喜欢每个 changeSet 有一个 DDL。