calculate-checksum

The calculate-checksum command calculates and prints a checksum for a changeset in your changelog.

Uses

The calculate-checksum command is typically used to compute an MD5 checksum, which serves as a unique identifier for the changeset. As a result, you can see whether the changeset has been changed and whether it has to be deployed differently now.

When running the calculate-checksum command, the DATABASECHANGELOG table calculates an MD5 checksum for each entry based on the SQL script of the changeset. This checksum helps Liquibase detect differences between the changesets you want to deploy and the changesets that have already been run against the database.

The MD5SUM column in the DATABASECHANGELOG table contains a checksum of the changeset and any change made in the changeset will result in a different checksum.

Syntax

To run the calculate-checksum command, specify the driver, classpath, and URL in the Liquibase properties file or in your command line. For more information, see Create and Configure a liquibase.properties File.

When you run calculate-checksum, you must identify which changeset to target by specifying its filepath, ID, and author in the following format: filepath::id::author. The filepath refers to the path from the current working directory to the changelog that your changeset is in. For example:

liquibase calculate-checksum --changeset-identifier=com/example/example-changelog.xml::1::adrian

If you want to run this command on a changeset that uses the logicalFilePath attribute, specify the logical filepath instead.

Note: In Liquibase 4.25.0 and later, you can instead specify the changeset identifier with the individual attributes --changeset-author, --changeset-id, and --changeset-path.

Note: The --changeset-identifier=value syntax was added in Liquibase 4.4. If you use an older version, specify your identifier as a positional argument: <command> value.

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

Attribute Definition Requirement
--changelog-file

The root changelog

Required
--url

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

Required
--changeset-author

Author of the changeset. Available in Liquibase 4.25.0+. Cannot be used with --changeset-identifier.

Optional
--changeset-id

ID of the changeset. Available in Liquibase 4.25.0+. Cannot be used with --changeset-identifier.

Optional
--changeset-identifier

Tag defined as a number or a descriptive name that is unique to each changeset. Requires the following format: filepath::id::author. Specify as --changeset-identifier=value. Positional format <command> <value> deprecated in 4.4+.

In 4.25.0+, you can either specify --changeset-identifier in the filepath::id::author format or specify --changeset-author, --changeset-id, and --changeset-path individually. However, you cannot specify a changeset in both ways.

Optional
--changeset-path

Path of the changelog that contains the changeset. Available in Liquibase 4.25.0+. Cannot be used with --changeset-identifier.

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

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.

Output

8:42b8af7ffb26b44a2716b330d78b90d5
Liquibase command 'calculate-checksum' was executed successfully.

Related links