update-testing-rollback tests rollback support by deploying all pending changesets to the database, executes a rollback sequentially for the equal number of changesets that were deployed, and then runs the update again deploying all changesets to the database.


update-testing-rollback is typically used when you want to test rollback functionality when deploying changesets in your changelog sequentially. Run this command only when all pending changelogs have been verified as ready to be deployed as you cannot specify changesets to exclude.

update-testing-rollback utilizes a multi-step operation and runs in sequential order:

  1. update changeset1; update changeset2; update changeset3
  2. rollback changeset3; rollback changeset2; rollback changeset1
  3. update changeset1; update changeset2 update changeset3

Note: If you use the earlier versions of Liquibase, the order of operations may differ.

If any of the changesets fail rollback, changesets that come after the failed changesets will not be tested or updated. Any changesets that come before the failed changesets will be deployed to the database.


To run the update-testing-rollback command, specify the driver, classpath, and URL in the Liquibase properties file. For more information, see Create and Configure a liquibase.properties File. You can also specify properties from the command line.

Then run the update-testing-rollback command:

liquibase update-testing-rollback --changelog-file=example-changelog.xml

Command arguments

Tip: For best results, specify all commands and parameters in the --kebab-case format in the CLI. If your preference is camelCase, it also works in the CLI.

Attribute Definition Requirement

The root changelog


The JDBC database connection URL. See Using JDBC URL in Liquibase.


Fully-qualified class which specifies a ChangeExecListener


Path to a properties file for the ChangeExecListenerClass


Specifies the changeset contexts to match. Contexts are expressions you can add to changesets to control which changesets are executed in any particular migration run.


Name of the default catalog to use for the database connection


Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.

Tip: In Liquibase v4.23.0+, camelCase for defaultSchemaName works successfully. If you are on an earlier version, camelCase may not work as expected.

Note: The syntax liquibase.command.defaultSchemaName is valid for v4.19.0+. For prior versions, use defaultSchemaName.


The JDBC driver class


The JDBC driver properties file


Specifies the changeset labels to match. Labels are tags you can add to changesets to control which changeset will be executed in any migration run.


Password to connect to the target database.

Tip: It is a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro.


Liquibase Pro only. If any changeset in a deployment fails, rollback-on-error stops the update operation and rolls back all changesets you just deployed. Default: false.

Note: A changeset marked failOnError=false does not trigger as an error, so rollback-on-error will not occur. Additionally, if a changeset is not auto-rollback compliant or does not have a rollback script, then rollback-on-error does not occur for any changeset. Read more: failOnError.


Username to connect to the target database.

Tip: It is a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro.


Note: The username and password attributes are not required for connections and systems which use alternate means of authentication. Also, you can specify database credentials as part of the url attribute.


When successful, the update-testing-rollback command produces the following output:

Liquibase Version: 4.9.1
Liquibase Community 4.9.1 by Liquibase

Liquibase command 'update-testing-rollback' was executed successfully.

Related links