我想在我的构建脚本中设置一个环境变量,为下面的changeSet设置模式名称。
<createTable tableName="actor" schemaName="mySchema">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="actor_pkey"/>
</column>
<column name="firstname" type="VARCHAR(255)"/>
<column name="lastname" type="VARCHAR(255)"/>
<column name="twitter" type="VARCHAR(15)"/>
</createTable>
我在构建脚本中通过命令行启动Liquibase。
为了传递不同环境下的参数,Liquibase使用了属性替换的方法 这需要对你现有的流程进行2次修改。
第一个是用一个变量替换文字值。
我想让我的构建脚本设置一个环境变量,为下面的changeSet设置模式名(下面我们将使用SCHEMA的属性名)。
<createTable tableName="actor" schemaName="${SCHEMA}">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="actor_pkey"/>
</column>
<column name="firstname" type="VARCHAR(255)"/>
<column name="lastname" type="VARCHAR(255)"/>
<column name="twitter" type="VARCHAR(15)"/>
</createTable>
然后我们可以在命令行创建的时候传递一个SCHEMA的值,为了证明将替换什么值,我使用了(注意lookup是我要替换的schema的名字)。
liquibase --changeLogFile=“sample.xml” updateSQL -DSCHEMA=lookup
这里是一段输出结果,它将显示模式已经被替换为lookup的值。
....
CREATE TABLE lookup.actor (id INTEGER GENERATED BY DEFAULT AS IDENTITY NOT NULL, firstname VARCHAR(255), lastname VARCHAR(255), twitter VARCHAR(15), CONSTRAINT actor_pkey PRIMARY KEY (id));
...
如果看起来没问题的话,你可以通过以下方法来运行这个变化集:
liquibase --changeLogFile=“sample.xml” update -DSCHEMA=lookup