我在 Liquibase 数据库版本控制方面遇到问题,因为我想将所有变更日志文件包含在文件夹中,而不指定其名称并使用它们进行更新。那可能吗?我的结构:
数据库--
|
--release-v1
|
--fistchangelog.sql
--secondchangelog.sql
|
--release-v2
|
--newchangelog.sql
...
对于每个版本,我都想使用其文件夹中的所有 *.sql 文件。我不想硬编码 sql 文件的名称。我在 Azure 中仅使用 liquibase 命令行进行 CI/CD。
我发现了类似(liquibase.org/get-started/best-practices)的内容,但它仅适用于 xml 文件,并且我使用 sql 扩展。
我有一个想法,但这对我来说似乎很糟糕,我将把它作为最后的手段。只需在 cmd 中为文件夹中的每个文件创建一个循环...
有人知道有没有更简单更好的方法?
最佳答案
你可以这样做: 有一个父更改日志文件:
databaseChangeLog = {
include file: "releases/ref1.groovy", relativeToChangelogFile: true
include file: "releases/release1.groovy", relativeToChangelogFile: true
include file: "releases/release2.groovy", relativeToChangelogFile: true
include file: "releases/release3.groovy", relativeToChangelogFile: true
}
在releases文件夹中ref1文件可以有:
databaseChangeLog = {
include file: "../tables/changelog.groovy", relativeToChangelogFile: true
}
因此,在同一个发布文件夹中,您可以拥有表文件夹,然后创建、删除更新文件夹。因此,您可以在表中拥有另一个文件,例如在创建文件夹中,您拥有在不同版本中添加的所有必需文件:
databaseChangeLog = {
include file: "create/changelog.groovy", relativeToChangelogFile: true
include file: "update/changelog.groovy", relativeToChangelogFile: true
include file: "data/changelog.groovy", relativeToChangelogFile: true
}
最后在releases主文件夹中你可以添加一个像release1.groovy这样的文件:
databaseChangeLog = {
include file: "../tables/create/your_structured_sql_file.groovy",
relativeToChangelogFile: true
}
这些都是常规的,但结构是相同的。
关于azure-devops - 有没有办法在 Liquibase 数据库版本控制中包含带有更改日志的整个文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70861681/