【发布时间】:2022-06-16 00:54:26
【问题描述】:
在我们的应用程序中有四个 SQL Server 数据库:
db1
db2
db3
db4
在使用 liquibase 连接到 SQL Server 时,我们在连接字符串中使用 db2,然后执行部署。
由于连接字符串中使用了db2,所以在db2数据库中创建了DATABASECHANGELOGLOCK和DATABASECHANGELOG。
作为部署的一部分,每个 SQL 脚本的开头都有数据库名称,如
Script1.sql
USE db1
GO
—update/delete statements
GO
Script2.sql
USE db2
GO
—update/delete statements
GO
Script3.sql
USE db3
GO
—update/delete statements
GO
Script4.sql
USE db4
GO
—update/delete statements
GO
如果部署中的最后一个脚本是 db2(因为它在连接字符串和 DATABASECHANGELOGLOCK 和 DATABASECHANGELOG 中指定),则在 db2 数据库中创建。然后部署成功
但如果最后一个脚本属于其他数据库(db2 除外),则会出现错误:
liquibase.exception.LockException: liquibase.exception.LockException: 没有正确更新更改日志锁。
似乎是在部署最后一个脚本的数据库中搜索 DATABASECHANGELOGLOCK 和 DATABASECHANGELOG。
我该如何处理?
【问题讨论】:
标签: liquibase