【发布时间】:2014-08-15 22:01:27
【问题描述】:
我有一个使用多种模式的软件。我制作了 db.changelog-master.xml 来维护不同的版本,并将 db.changelog-S16.xml 制作为当前的 sprint(目前正在进行 sprint 16)。 db.changelog-S16.xml 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<include file="my_schema_1.xml" relativeToChangelogFile="true" />
</databaseChangeLog>
这里的问题是,我想制作一个可以更新所有模式的变更日志,但我未能找到一种方法来硬编码变更日志中的模式名称。是否可以通过 generateChangelog 以某种方式将其获取到更改日志(因此模式名将位于 my_schema_1.xml 中),或者我可以将其键入更改日志吗?我正在寻找的是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<TAG WHERE I COULD INSERT SCHEMANAME>
<include file="my_schema_1.xml" relativeToChangelogFile="true" />
<TAG WHERE I COULD INSERT SCHEMANAME>
<include file="my_schema_2.xml" relativeToChangelogFile="true" />
etc...
</databaseChangeLog>
因为现在只能在从命令行运行 liquibase 时更改更新子句中的架构。当我在他们的服务器上创建客户数据库时,这也很方便。我可以制作 customer_master.xml 并在其中硬编码他们的模式名,然后从头开始将其运行到他们的服务器。到目前为止,我发现插入模式名称的唯一位置是在您进行命令行调用时。这意味着我必须以不同的方式更新每个架构或制作一些 powershell 脚本来为我完成它们......
【问题讨论】:
标签: liquibase