rollbackCount

The rollbackCount command sequentially reverts a specified number of changesets on your database.

Uses

The rollbackCount command is used when you want to roll back changes sequentially, starting with the most recent changes and working backward until the value specified is reached.

The image below shows three changesets: changeset a, changeset b, and changeset c. Running the command rollbackCount 3, rolls back the last three changesets.

So, if you have changeset a, b, c, and only changeset a is your target, you have to run the rollbackCount 3 command to get rid of that specific changeset.

If you want to revert changeset a without having to roll back changeset b and changeset c as well, you can do it with the help of the rollbackOneChangeSet command.

The impacts of rollbackCount

The use of rollbackCount comes with risk of removing all changes depending on the value specified. Also, there is an additional impact to the DATABASECHANGELOG table. When any change is rolled back, the row associated with that change is deleted from the DATABASECHANGELOG table.

Please look for unintended consequences before using this command.

The best practice is to run the rollbackCountSQL command helper command because it allows you to inspect the rollbackCount SQL and search for any potential mistakes before you execute the rollbackCount <value> command.

Running the rollbackCount command

Before running the rollbackCount command, you can run the history command to see all your previously executed changes.

Note: rollbackCount works from the bottom of the list toward the top.

To run the rollbackCount command, you can specify the driver, classpath, and URL in your liquibase.properties file. For more information, see Creating and configuring a liquibase.properties file. You can also specify these in your command line.

Then run the rollbackCount command:

liquibase --changeLogFile=mychangelog.sql rollbackCount 1

Note: Enter the name of the changelog and value you want to use in place of mychangelog.sql and 1.

rollbackCount global attributes

Attribute Definition Requirement
--changeLogFile* The root changelog Required
--url The JDBC database connection URL Required
--username** The database username Required
--password** The database password Required

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

rollbackCount command attributes

Attribute Definition Requirement
--value The integer indicating the number of changes you want to roll back Required