我有一个使用多个模式的软件.我创建了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>
Run Code Online (Sandbox Code Playgroud)
这里的问题是,我想制作一个可以更新所有模式的更改日志但是我没有找到在更改日志中硬编码schemaname的方法.是否可以通过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>
Run Code Online (Sandbox Code Playgroud)
因为现在只能在从命令行运行liquibase时更改update子句中的模式.当我将客户数据库发送到他们的服务器时,这也很方便.我可以创建customer_master.xml并在其中硬编码其schemanames,然后从头开始运行它们到他们的服务器.到目前为止,我发现插入模式名称的位置是在进行命令行调用时.这意味着我必须以不同方式更新每个模式,或者制作一些PowerShell脚本来为我做这些...
liquibase ×1