Liquibase Commands

Liquibase comes with several commands that can help you migrate and make changes to your databases. The following is a list of all commands available:

Liquibase start commands

Tip: All commands and parameters use the --kebab-case format in the CLI environment. This is the format Liquibase recommends for best results. If your preference is camelCase, it will still work in the CLI.

Command Description
init hub The hub subcommand connects your local Liquibase activity to Liquibase Hub with an API key and sets up the Liquibase environment to use Liquibase Hub.
init project The project subcommand finds or creates your project folder with the changelog and Liquibase properties files and delivers an example H2 database to help you get started.
init start-h2 The start-h2 subcommand starts the in-memory H2 database included in the Liquibase installation package to get started and test how Liquibase works.

Database update commands

Command Description
update Updates database to current version.
update-sql A helper command that allows you to inspect the SQL Liquibase will run while using the update command.
update-count Applies the next <value> changesets.
update-count-sql Writes SQL to apply the next <value> changesets to STDOUT.
update-one-changeset Targets and deploys any single changeset.
update-one-changeset-sql Writes SQL to target and deploy any single changeset.
update-testing-rollback Updates the database, then rolls back changes before updating again.
update-to-tag Applies sequential changes to your database from the newest changeset to the changeset with the tag you specified and applied earlier.
update-to-tag-sql A helper command that inspects the SQL Liquibase will run while using the update-to-tag <tag> command.

Database rollback commands

Command Description
rollback Rolls back the database to the state it was in when the tag was applied.
rollback-sql A helper command that produces the raw SQL Liquibase would run when using the rollbackByTag command.
rollback-to-date Rolls back the database to the state it was in at the given date/time.
rollback-to-date-sql A helper command that allows you to inspect the SQL Liquibase will run while using the rollback-to-date command.
rollback-count Rolls back the last <value> changesets.
rollback-count-sql Writes SQL to roll back the last <value> changesets to STDOUT.
rollback-one-changeset Rolls back a single changeset without needing to roll back other already applied changeset.
rollback-one-changeset-sql Writes SQL to roll back a single changeset to STDOUT.
rollback-one-update Rolls back all changesets related by a specific deploymentId that was made during a previous change to your database.
rollback-one-update-sql A helper command that allows you to inspect the SQL Liquibase will run to revert all changeset associated with the deploymentID specified in the rollback-one-update command.
future-rollback-sql Writes SQL to roll back the database to the current state after the changes in the changelog have been applied.
future-rollback-count-sql Generates the SQL that Liquibase would use to sequentially revert the number of changes associated with undeployed changesets, which are added to a changelog file.
future-rollback-from-tag-sql Produces the raw SQL Liquibase would need to roll back all undeployed changes made up to the specified tag.

Database snapshot commands

Command Description
generate-changelog Generate a changelog from a database when adding Liquibase to a new project. This is synonymous with snapshot with the exception of saving the output as XML in the changelog.
snapshot Gathers the current database schema and displays that information to STDOUT. With options, can save the schema in JSON format, and that JSON snapshot can serve as a comparison database.
snapshot-reference Captures the current state of the referenceURL database, which is the source database.

Database diff commands

Command Description
diff Writes description of differences between two databases to standard out.
diff JSON Allows you to compare two databases of the same type, or different types, to one another and use the output in a JSON format.
diff-changelog Adds any differences between the databases specified to a changelog. Can append in any of the supported changelog formats.

Status commands

Command Description
history Lists all deployed changesets and their deploymentIds.
status Outputs the count (or list, if --verbose) of changesets that have not been deployed.

Maintenance commands

Command Description
calculate-checksum Calculates and prints a checksum for the changeset with the specified id in the following format: filepath::id::author.
changelog-sync Marks all changes as executed in the database.
changelog-sync-sql Writes SQL to mark all changes as executed in the database to STDOUT.
changelog-sync-to-tag Marks all undeployed changesets from your changelog up to and including the specified tag as executed in your database.
changelog-sync-to-tag-sql Produces the raw SQL that Liquibase would run when using the changelog-sync-to-tag command to mark all undeployed changesets associated with the specified tag as executed in your database.
clear-checksums Removes current checksums from database. On next update changesets that have already been deployed will have their checksums recomputed, and changesets that have not been deployed will be deployed.
drop-all Drops all database objects owned by the user.
execute-sql Executes a SQL string or file.
list-locks Lists who currently has locks on the database changelog.
mark-next-changeset-ran Mark the next change set as executed in the database.
mark-next-changeset-ran-sql Inspects the SQL Liquibase will run while using the mark-next-changeset-ran command.
release-locks Releases all locks on the database changelog.
tag "Tags" the current database state for future rollback.
tag-exists Checks whether the given tag already exists.
unexpected-changesets Produces a list of changesets that were run in the database but do not exist in the current changelog.
validate Checks the changelog for errors.

Documentation commands

Command Description
db-doc Generates Javadoc-like documentation based on current database and changelog.

Liquibase Hub commands

Option Description
register-changelog Connects your local Liquibase activity to a specific Liquibase Hub Project.
sync-hub Synchronizes the local DATABASECHANGELOG table with Liquibase Hub.
deactivate-changelog Removes the changelogID from your changelog file so it stops sending reports to Liquibase Hub.

Quality checks commands

For more information, see Quality Checks Commands .

Command Description
copy The copy subcommand copies a customizable check so that you can run the same check multiple times with different parameters.
customize The customize subcommand allows you to customize checks specified in your check configurations.
delete The delete subcommand allows you to delete a copy of a check from your checks settings.
disable The disable subcommand disables a specific check provided in the --check-name parameter.
enable The enable subcommand enables a specific check provided in the --check-name parameter.
reset The reset subcommand reverts customizations made to the check indicated in the --check-name parameter to default settings.
run The run subcommand executes checks using the checks settings file and the changelog file you specify.
show The show subcommand prints the available checks and their configurations as indicated in the check settings file to STDOUT.
bulk-set The bulk-set command sets all qualifying quality checks to the same value.

Required parameters for most commands

Option Description
--changelog-file=<path and filename> The changelog file to use.
--username=<value> Database username.
--password=<value> Database password.
--url=<value> Database JDBC URL.
--driver=<jdbc.driver.ClassName> Database driver class name.

Optional parameters

Option Description
--classpath=<value> Additional JDBC Driver files that are not already in the $LIQUIBASE_HOME/lib or ./liquibase_libs directories. List multiple items using the standard classpath separator for your platform, which is a colon (:) on Mac/Linux, and a semicolon (;) on Windows.
--contexts=<value> changesets Contexts to execute.
--defaultSchemaName=<schema> Specifies the default schema to use for managed database objects and for Liquibase control tables.
--databaseClass=<custom.DatabaseImpl> Specifies a custom Database implementation to use
--defaultsFile=</path/to/file> File containing default option values. (Default is ./
--duplicateFileMode=</path/to/file> How to handle multiple files being found in the search path that have duplicate paths. Options are WARN (log warning and choose one at random) or ERROR (fail current operation).
--includeSystemClasspath=<true or false> Include the system classpath in the Liquibase classpath. (default: true)
--promptForNonLocalDatabase=<true or false> Prompt if non-localhost databases. (default: false)
--changelogParseMode=<value> Configures how to handle unknown fields in changelog files. Possible values: STRICT which causes parsing to fail, and LAX which continues with the parsing.
--currentDateTimeFunction=<value> Overrides current date time function used in SQL. Useful for unsupported databases.
--labelFilter=<value> Filter the changelog using Labels.
--log-level=<level> Execution log level (debug, info, warning, severe, off).
--log-file=<filename> Rather than logging to console, send logging messages to a file.
--liquibaseProLicenseKey=<licenKey> A Liquibase Pro license key (base64 encoded string) unlocks additional features.
--help Output command line parameter help.
--dataOutputDirectory Directory where insert statement CSV files will be kept (required by generate-changelog command).
--propertyProviderClass=<properties.ClassName> Custom properties implementation to use.
--schemas=<name1,name2> A comma-separated list of database schemas from which to include objects when executing a command, such as snapshot, generate-changelog, or diff-changelog. This flag is required when you are referencing multiple schemas in a command.
--searchPath=<value> List of base directories and locations to search for migration files. List multiple items using commas (,). The default search path includes the current working directory plus any jars in your $LIQUIBASE_HOME/lib and ./liquibase_libs directories

Required diff parameters

Option Description
--referenceUsername=<value> Base Database username.
--referencePassword=<value> Base Database password.
--referenceUrl=<value> Base Database URL.

Optional diff parameters

Option Description
--referenceDriver=<jdbc.driver.ClassName> Base Database driver class name.
--referenceDefaultSchemaName=<schema> Base Database default schema name.

changelog properties

Option Description
-D<>=<property.value> Pass a name/value pair for substitution of ${} blocks in the changelogs.