How to use diff in multiple schemas in Liquibase

Last updated: July 14, 2025

You can diff multiple schemas to capture the changes made by a few people in their database environments and add those changes into a release artifact so they can be deployed in the existing release automation.

Liquibase allows you to handle multiple schemas with the following commands:

  • diff

  • diff-

  • generate-changelog

  • snapshot

Procedure

1

Run the snapshot command to capture the state of the database containing different schemas:

liquibase --output-file=mySnapshot.json snapshot --snapshot-format=json --schemas=lookup,public

When running the snapshot command on multiple schemas, enter the --schemas flag after the snapshot command.

Example properties file:

changelog-file: myChangelog.xml url: offline:postgresql=//localhost:5432/MYDATABASE username: postgres password: password classpath: ../../Drivers/postgresql-42.2.8.jar licenseKey: <ProKey> includeSchema: true

2

Manually make some changes to the target database on the different schemas.

3

Run the diff command specifying the snapshot (an offline mode) and the database with new changes:

liquibase diff --url=offline:postgresql?snapshot=mySnapshot.json --referenceUrl="jdbc:postgresql://localhost:5432/MYDATABASE" --referenceUsername=<USERNAME> --referencePassword=<PASSWORD>

Note: The format for the URL is the following: offline:<db>?snapshot=<path/to/snapshot.json>. Use the name of your database type from the list of the supported databases in place of <db> and the path relative to where the command is running in place of <path/to/snapshot.json>. If you are using another database, like H2, you may need to wrap your URL in ": "offline:<db_type>?snapshot=<path/to/snapshot.json>".

4

Run the diff-changelog command specifying the snapshot (an offline mode) and the database with new changes:

liquibase diff-changelog --url=offline:postgresql?snapshot=mySnapshot.json --referenceUrl=jdbc:postgresql://localhost:5432/MYDATABASE --changelog-file=mydiffchangelog.xml

The generated changelog contains changes that you can compare and confirm.

5

Check the changes manually or by running automation tests, and then deploy them to the production.

Diff multiple schemas in Liquibase - Liquibase