【问题标题】:How to get Liquibase to add more data to DATABASECHANGELOGLOCK table?如何让 Liquibase 向 DATABASECHANGELOGLOCK 表添加更多数据?
【发布时间】:2017-03-08 17:29:37
【问题描述】:

在我们的构建服务器中,我们针对一个数据库部署了许多功能分支。问题是有时某个分支中的一些错误脚本会导致 LB 退出而不释放锁。问题是没有简单的方法来找出是什么分支导致了这种情况。我们可能有多达 30 个分支不断部署,因为该分支有新的更改。

有什么方法(或者我们可以在 Liquibase 中提供新功能)来设置实例名称,并且名称可以存储在 DATABASECHANGELOGLOCK 表的 LOCKEDBY 列中,以便我们可以轻松找出导致问题的分支/实例?

目前,LOCKEDBY 中只有 IP,所有实例都相同。

【问题讨论】:

    标签: liquibase


    【解决方案1】:

    您可以指定插入到 LOCKEDBY 列中的系统属性:

    System.setProperty("liquibase.hostDescription", "some value");
    

    【讨论】:

    • 谢谢。我们意识到它使用主机名,并且因为我们的应用程序部署在 docker 容器中并且我们没有为其指定名称,所以它使用的是 IP 地址。现在我们设置名称并插入正确的名称而不是 ip
    【解决方案2】:

    我认为要实现这一点,您需要在此处修补 Liquibase:

    https://github.com/liquibase/liquibase/blob/ed4bd55c36f52980a43f1ac2c7ce8f819e606e38/liquibase-core/src/main/java/liquibase/lockservice/DatabaseChangeLogLock.java

    https://github.com/liquibase/liquibase/blob/ed4bd55c36f52980a43f1ac2c7ce8f819e606e38/liquibase-core/src/main/java/liquibase/lockservice/StandardLockService.java

    以某种方式获取附加变量(属性文件/环境变量/等)并存储在表中。

    顺便说一句,使用同一个数据库实例部署多个分支时要小心,因为您可能会更改一个分支的数据库结构,这会破坏另一个分支。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-26
      • 2021-12-22
      • 1970-01-01
      • 2011-01-14
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      相关资源
      最近更新 更多