rollbackOneChangeSet
command
The rollbackOneChangeSet
command reverts (rolls back) one non-sequential changeset made during a previous change to your database. It is only available for Liquibase Pro users.
Uses
The rollbackOneChangeSet
command is typically used when you want to undo a change made to your database and revert it to a previous state without affecting any other changes made to your database.
While the rollback
command reverts all changesets deployed sequentially to a specified point by using rollbackDate
, rollbackCount
, or rollback <tag_name>
, the rollbackOneChangeSet
command allows you to target a specific changeset without impacting changesets that came before or after it.
The image above shows changesets A through I, with changeset I being the most recently deployed. As you can see, the rollbackOneChangeSet
command allows you to target changeset B and revert it to its previous state without impacting the others.
The impacts of rollbackOneChangeSet
Like any cherry-picking tool, using the rollbackOneChangeSet
command comes with risks which may be unintended.
Please look for potential unintended consequences before using this command.
It is a best practice to run the rollbackOneChangeSetSQL command because it allows you to inspect the rollback SQL and search for any potential mistakes before you execute rollbackOneChangeset
.
Also, the use of rollbackOneChangeSet
comes with risk of unintended consequences, because of this, the command requires a --force
flag to indicate that you intend to run the command.
Running the rollbackOneChangeSet
command
Before running the rollbackOneChangeSet
command, gather the following information from your DATABASECHANGELOG table:
- The Author of the changeset you want to revert
- The changeset ID of the changeset you want to revert
- The file name (changeset path) of the changeset you want to revert
Note: The
--rollbackScript
is only needed if the rollback is not already defined in the changelog, and if it is not a rollback that is automatically provided by Liquibase.
Then run the rollbackOneChangeSet
command, with your information:
liquibase --changeLogFile=changelog.xml rollbackOneChangeSet --changeSetAuthor="LiquibaseProUser" --changeSetId="createProc-proschema" --changeSetPath=changelog.xml --force
For more command specific help, type liquibase rollbackonechangeset --help
into the command prompt.
rollbackOneChangeSet
global parameters
Parameter | Definition | Requirement |
---|---|---|
--changeLogFile
|
Specifies the root changelog. | Required |
--url
|
Specifies the JDBC database connection URL. | Required |
--username
|
Specifies the database username. | Required |
--password
|
Specifies the database password. | Required |
--liquibaseProLicenseKey
|
Your Liquibase Pro license key | Required |
rollbackOneChangeSet
command parameters
Parameter | Definition | Requirement |
---|---|---|
--changeSetId
|
The changeset ID from the changelog. | Required |
--changeSetAuthor
|
The name of the author for the changeset. | Required |
--changeSetPath
|
The path to the changelog containing the changeset you want to rollback. | Required |
--force
|
A required parameter which indicates you intend to use this feature. | Required |
--rollbackScript
|
The path to the script to use to perform the rollback. | Optional * |
* This option is only needed if the rollback is not already defined in the changelog, and if it is not a rollback that is automatically provided by Liquibase.
Output
When successful, the rollbackOneChangeSet
command produces the following output:
Rolling Back Changeset: changelog.xml::createProc-proschema::LiquibaseProUser
Liquibase: Rollback has been successful.