rollback-one-update

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.

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.

Global 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.

Parameter Definition Requirement
--license-key

Your Liquibase Pro license key

Required

Command arguments

Parameter Definition Requirement
--changelog-file *

The root changelog

Required
--force

A required parameter which 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

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

Required
--change-exec-listenter-class

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

Optional
--change-exec-listener-properties-flie

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

Name of the default catalog to use for the database connection

Optional
--default-schema-name

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.

Optional
--deployment-id *

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

The JDBC driver class

Optional
--driver-properties-file

The JDBC driver properties file

Optional
--password

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
--rollback-script

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 is automatically generated by Liquibase.

Optional
--username

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

* 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.

Like what you see? Try this command in Pro for Free.

Related links