rollback-one-update

Last published July 28, 2025

Note: This is a Liquibase Pro feature, so you need a Liquibase Pro License Key to use it.

The rollback-one-update command reverts (rolls back) all changesets related by a specific deployment ID that was made during a previous change to your database. It is only available for Liquibase Pro users.

Uses

The rollback-one-update command is typically used when you want to undo a series of changes made to your database during a specific deployment and revert those changesets to their previous state without affecting any other changes made to your database.

The image above shows deployment IDs 1 through 5, with deployment ID 2 incorporating all the changesets we want to roll back. As you can see, the rollback-one-update command allows you to target deployment ID 2 and revert all changesets associated with the same deployment ID to its previous state without impacting the others.

In Liquibase Pro 4.27.0 and later, you can automatically generate a database Rollback Report summarizing this command.

Impact

Like any cherry-picking tool, using the rollback-one-update command comes with risks which may be unintended.

Warning: Look for potential unintended consequences before using this command.

It is a best practice to run the rollback-one-update-sql command because it allows you to inspect the rollback-one-update SQL and search for any potential mistakes before you execute the rollback-one-update command.

The use of rollback-one-update comes with risk of unintended consequences, so you must also specify --force to indicate that you intend to run the command.

DATABASECHANGELOG table

Running the rollback-one-update command will remove the deployment record from the DATABASECHANGELOG table. As a user, you must decide on what to do with your changesets after the rollback-one-changeset command has been run.

Depending on your desired outcome, consider doing one of the following:

  • Modify the changeset in the changelog file and re-deploy it.

  • Do nothing to the changeset in the changelog file and have it be re-deployed.

  • Delete the changeset in the changelog file.

Syntax

Before running the rollback-one-update command, you can get the ID of the deployment you want to revert by running the history command.

Note: If you do not specify --deployment-id, Liquibase Pro looks up the most recent deployment ID from the DATABASECHANGELOG table and uses it for the rollback.

Then run the rollback-one-update command, with your information:

liquibase rollback-one-update --changelog-file=example-changelog.xml --deployment-id=068379006 --force

For more command-specific help, type liquibase rollback-one-update --help into the command prompt.

* Liquibase will check nested changelogs for definitions of the changesets to rollback.

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.

Parameters

Global parameters

Parameter

Definition

Requirement

--license-key=<string>

Your Liquibase Pro license key

Required

Command parameters

Parameter

Definition

Requirement

--changelog-file=<string>

The root changelog

Required

--force=<true|false>

A required parameter that indicates you intend to use this feature. If you specify --force or --force=true, the command executes. If you omit the parameter or specify --force=false, the command does not execute. Default: false.

Required

--url=<string>

The JDBC database connection URL.

Required

--change-exec-listener-class=<string>

Fully-qualified class that specifies a ChangeExecListener. For more information, see Implementing a Custom ChangeExecListener Class with Liquibase and ChangeExecListenerCommandStep.

Optional

--change-exec-listener-properties-file=<string>

Path to a properties file for the ChangeExecListener class. For more information, see Implementing a Custom ChangeExecListener Class with Liquibase and ChangeExecListenerCommandStep.

Optional

--default-catalog-name=<string>

Name of the default catalog to use for the database connection

Optional

--default-schema-name=<string>

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.

Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.

Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.

Optional

--deployment-id=<string>

Specifies the deployment ID of all rows from the DATABASECHANGELOG table related to the changesets intended for rollback. If not supplied, Liquibase Pro will look up the most recent deployment ID from the DATABASECHANGELOG table and use it for the rollback.

Optional

--driver=<string>

The JDBC driver class

Optional

--driver-properties-file=<string>

The JDBC driver properties file

Optional

--password=<string>

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.

Optional

--report-enabled=<true|false>

Enables a report at the command level. Overrides the global parameter --reports-enabled. Default: true.

Optional

--report-name=<string>

Specifies the name of the report file at the command level. Overrides the global parameter --reports-name. By default, Liquibase generates a new report file labeled with a timestamp (user's local time). If you set a custom name, Liquibase overwrites the existing file every time you generate a new report. Default: report-<DD-Mon-YYYY-HHmmss>.html.

Optional

--report-path=<string>

Specifies the file path to the report file at the command level. Overrides the global parameter --reports-path. Default: ./.

Optional

--report-suppress-exception=<true|false>

Liquibase 4.31.0+. Specifies whether to hide exceptions (which may contain SQL) from the operation report at the command level. Overrides the global parameter --reports-suppress-exception. Default: false. However:

If --report-suppress-exception is not set and --report-suppress-sql=true, Liquibase suppresses all SQL, including exception SQL.

If --report-suppress-exception=false and --report-suppress-sql=true, Liquibase suppresses most SQL but shows exception SQL.

Optional

--report-suppress-sql=<true|false>

Liquibase 4.31.0+. Specifies whether to hide changeset SQL in operation reports at the command level. Overridden by the global parameter --reports-suppress-sql. Default: false.

Optional

--rollback-script=<string>

The path to the script to use to perform the rollback. Only needed if the rollback is not already defined in the changelog, and if it is not a rollback statement that Liquibase automatically generates.

Optional

--username=<string>

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.

Optional

Output

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

Liquibase Version: 4.9.1 Liquibase Pro 4.9.1 by Liquibase licensed to Liquibase Pro Evaluation until Tue Jun 07 18:00:00 MDT 2022 WARNING! Your license will expire in 29 days! To renew Liquibase Pro please contact sales@liquibase.com or go to https://www.liquibase.org/download Defaulting to last deployment ID '2212078476' Rolling Back Changeset: example-changelog.sql::3::other.dev Rolling Back Changeset: example-changelog.sql::2::your.name Rolling Back Changeset: example-changelog.sql::1::your.name rollback-one-update executed for DBUSER@jdbc:h2:tcp://localhost:9090/mem:dev Liquibase command 'rollback-one-update' was executed successfully..