如何更新现有变更集

时间:2017-12-19 08:52:17

标签: liquibase

我想更新非常旧的变更集,因为它有一个错误。我已经更新了changesetid并且在运行之后我得到了校验和错误,即校验和被修改了。现在我已经使用这个新的checkSum添加了validCheckSum标签。成功后,我看不到新的变化。有没有办法更新已经执行的更改集。

3 个答案:

答案 0 :(得分:1)

每个changeSet代码都由“id”代码和“author”代码组合唯一标识,因此请检查idauthor name是否已存在DATABASECHANGELOGid 1}}表。如果组合存在,则更改xml文件中的runOnChange,然后运行构建

如果仍然不起作用,请在<ChangeSet>中添加 public async Task<IActionResult> OnGetAsync() { UserList = _userManager.Users.ToList(); UserRoleList = new List<string>(); RoleList = new List<string>(); return Page(); } public async Task<IActionResult> OnPostGetRolesAsync() { UserList = _userManager.Users.ToList(); // You have to reload var user = await _userManager.FindByNameAsync(Input.User); UserRoleList = await _userManager.GetRolesAsync(user); return Page(); } 属性并尝试

  

runOnChange - 执行任何更改时发现它已存在的变更集

答案 1 :(得分:0)

在带有sqlFile标签的变更集中使用 runOnChange 的示例。 我有一个使用IDENTITY列类型的Oracle 18脚本,然后不得不为不支持IDENTITY列类型的Oracle 10更改了脚本

 <changeSet id="2" author="auto" runOnChange="true">
        <sqlFile dbms="oracle" encoding="utf8" endDelimiter=";" path="oracle/230.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="true" />
  </changeSet>

答案 2 :(得分:0)

如果您声明的是一个非常旧的变更集,则应考虑不更改旧的变更集,而应添加一个新的变更集来修复该错误,因为它可以更好地控制您拥有的版本。这是使用liquibase的主要原因之一。