Change Log Parameters

Since Liquibase 1.7

Liquibase allows dynamic substitution of parameters in a changelog. The parameters to replace are described using the ${} syntax.

Configuring parameter values

Parameter values are looked up in the following order:

  • Passed as a parameter to your Liquibase runner (see Ant, command_line, etc. documentation for how to pass them)
  • As a JVM system property
  • In the parameters block (<property> Tag) of the DatabaseChangeLog file itself.


<createTable tableName="${}">
     <column name="id" type="int"/>
     <column name="${}" type="varchar(${column1.length})"/>
     <column name="${}" type="int"/>

    <property name="clob.type" value="clob" dbms="oracle"/>
    <property name="clob.type" value="longtext" dbms="mysql"/>

    <changeSet id="1" author="joe">
         <createTable tableName="${}">
             <column name="id" type="int"/>
             <column name="${}" type="${clob.type}"/>
             <column name="${}" type="int"/>


Defines a parameter for the changelog. Given a list of contexts and/or databases, the parameter will be only used in those contexts and/or databases.

Available Attributes

nameName of the table's schema required
valueName of the column's table required
contextContexts given as comma separated list.
dbmsDatabase types given as comma separated list.


    <property name="simpleproperty" value="somevalue"/>
    <property name="clob.type" value="clob" dbms="oracle,h2"/>
    <property name="clob.type" value="longtext" dbms="mysql"/>
    <property name="myproperty" value="yes" context="common,test"/>

Missing, incomplete or wrong information? Please send a pull request