Liquibase® version 3.8.5 is now available! Get it for free.
2018 XML Announcement
News All Previous Posts >>

Subscribe for email updates

- and/or -

Database Change Log File

The root of all Liquibase changes is the databaseChangeLog file.

Available Attributes

AttributeDescription
logicalFilePathUse to override the file name and path when creating the unique identifier of change sets. Required when moving or renaming change logs.
objectQuotingStrategyThis controls how object names are quoted in the SQL generated or used in calls to the database. Different databases do different things to the names of objects, for example Oracle converts everything to uppercase (unless quoted). There are three possible values. The default value is LEGACY.
LEGACY - Same behavior as in Liquibase 2.0
QUOTE_ALL_OBJECTS - Every object gets quoted. e.g. person becomes "person".
QUOTE_ONLY_RESERVED_WORDS - Quote reserved keywords and invalid column names.

Available nested elements

TagDescription
preConditionsPre-conditions required to execute the change log. Read More
propertyValue to set property to, if not set by another means. Read More
changeSetThe change sets to execute. Read More
includeAdditional files containing change sets to execute. Read More
contextContext to be appended (using AND) to all changeSets since 3.5

When the Liquibase migrator runs, it parses the databaseChangeLog tag. It first checks any preconditions specified. If any of the preconditions fail, the Liquibase will exit with an error message explaining what failed. Preconditions are useful for both documenting and enforcing expectations and assumptions of the changelog writer such as the DBMS to be run against or the user the changes are run as.

If all preconditions are met, Liquibase will then begin running changeSet and include tags in the order they appear in the databaseChangeLog file.

The XML schema for the databaseChangeLog tag is available at:

Some legacy XSDs are listed on the XML Format page.

Each changeSet contains an “id” tag and an “author” tag. These tags, along with the classpath location and name of the XML file create a unique identifier for that changeSet.

Sample Empty Change Log

<?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"
    xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
    xmlns:pro="http://www.liquibase.org/xml/ns/pro"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd
    http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd
    http://www.liquibase.org/xml/ns/pro http://www.liquibase.org/xml/ns/pro/liquibase-pro-3.8.xsd ">
</databaseChangeLog>
databaseChangeLog:
{
    "databaseChangeLog": [
    ]
}
--liquibase formatted sql