Liquibase Command calculateChecksum

The Liquibase differentiate between multiple ChangeSet by calculating the MD5 checksome of a ChangeSet by combining filepath::id::author parameters of ChangeSet. this MD5 checksome serves as the unique identifier for the ChangeSet and helps Liquibase determine which ChangeSet has already been executed before. Liquibase saves these MD5 checksome in DATABASECHANGELOG table as well for future reference.

Liquibase provides calculateChecksum command which recalculate and print the MD5 checksome for the ChangeSet of ChangeLog file.

<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:pro="http://www.liquibase.org/xml/ns/pro" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/pro http://www.liquibase.org/xml/ns/pro/liquibase-pro-latest.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
	<changeSet author="wesome" id="1697962298531-1">
		<createTable catalogName="appledb" tableName="apple">
			<column autoIncrement="true" name="apple_id" type="BIGINT">
				<constraints nullable="false" primaryKey="true" />
			</column>
			<column name="apple_name" type="VARCHAR(255)">
				<constraints unique="true" />
			</column>
			<column name="available" type="CHAR(1)" />
			<column defaultValueComputed="CURRENT_TIMESTAMP" name="current_date_time" type="datetime" />
		</createTable>
	</changeSet>
	<changeSet author="wesome" id="1697962298531-2">
		<insert catalogName="appledb" tableName="apple">
			<column name="apple_id" valueNumeric="1" />
			<column name="apple_name" value="Macintosh" />
			<column name="available" value="Y" />
			<column name="current_date_time" valueDate="now()" />
		</insert>
	</changeSet>
	<changeSet author="wesome" id="1697962298531-3">
	<insert catalogName="appledb" tableName="apple">
	<column name="apple_id" valueNumeric="2" />
	<column name="apple_name" value="Fuji" />
	<column name="available" value="Y" />
	<column name="current_date_time" valueDate="now()" />
	</insert>
	</changeSet>
</databaseChangeLog>

liquibase.properties (update changeLog File file format with SQL, XML, YAML, JSON as per changelog.mysql.)

changeLogFile=changelog.mysql.xml
liquibase.command.url:jdbc:mysql://localhost:3306/appleDb?createDatabaseIfNotExist=true&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
liquibase.command.username : root
liquibase.command.password : rootroot

Run command

liquibase calculate-checksum --changeset-identifier=changelog.mysql.xml::1697962298531-1::wesome

Liquibase will recalculate and print the MD5 Checksum for ChangeSet id="1697962298531-1", same can be verified in DATABASECHANGELOG table by executing the command

select * from appleDb.DATABASECHANGELOG where ID="1697962298531-1";

follow us on