如何让Liquibase向DATABASECHANGELOGLOCK表添加更多数据?

时间:2017-02-17 03:19:18

标签: liquibase

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

是否有任何方式(或者我们可以在Liquibase中使用新功能)来设置实例名称,并且名称可以存储在表DATABASECHANGELOGLOCK的LOCKEDBY列中,以便我们可以轻松找出导致问题的分支/实例?

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我认为你需要在这里修补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

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

顺便说一下,请注意使用相同的数据库实例部署多个分支,因为您可能会在一个分支的DB结构中进行更改,这将会破坏另一个分支。