changelog-sync-sql

The changelog-sync-sql command is a helper command that produces the raw SQL Liquibase would run when using the changelog-sync command.

Uses

The changelog-sync-sql command is typically used when you want to inspect the SQL Liquibase will use to baseline a new database environment.

It is best practice to inspect any SQL that Liquibase would run when using the changelog-sync command so you can review any changes the command would make to your database before running the command.

Running the changelog-sync-sql command

To run the changelog-sync-sql command, specify the driver, classpath, and URL in the Liquibase properties file. For more information, see Specifying Properties in a Connection Profile. You can also specify these properties in your command line.

Then run the changelog-sync-sql command:

liquibase --changelog-file=mychangelog.postgresql.sql changelog-sync-sql

Note: Enter the name of the changelog that you want to use in place of mychangelog.postgresql.sql.

changelog-sync-sql global attributes

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.

Attribute Definition Requirement
--changelog-file The root changelog Required
--url The JDBC database connection URL Required
--username The database username Required*
--password The database password Required*
--output-file* The attribute that specifies the file path to where the changelog-sync SQL will be written Optional

*If not specified, the changelog-sync-sql output goes to STDOUT.

Note: The username and password attributes are not required for connections and systems which use alternate means of authentication.

changelog-sync-sql example output

When successful, the changelog-sync-sql command produces the following output:


Starting Liquibase at 10:09:31 (version 4.9.1 #1978 built at 2022-03-28 19:39+0000)
Liquibase Version: 4.9.1

-- *********************************************************************
-- SQL to add all changesets to database history table
-- *********************************************************************
-- Change Log: example-changelog.sql
-- Ran at: 5/13/22, 10:09 AM
-- Against: DBUSER@jdbc:h2:tcp://localhost:9090/mem:dev
-- Liquibase version: 4.9.1
-- *********************************************************************

-- Lock Database
UPDATE PUBLIC.DATABASECHANGELOGLOCK SET LOCKED = TRUE, LOCKEDBY = 'DESKTOP-SQVSSV2 (192.168.1.179)', LOCKGRANTED = NOW() WHERE ID = 1 AND LOCKED = FALSE;

INSERT INTO PUBLIC.DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('1', 'Amber.Williams', 'example-changelog.sql', NOW(), 6, '8:e3a3ed80b1b6b22ae5e9317c1fd14334', 'sql', 'example comment', 'EXECUTED', 'example-context', 'example-label', '4.9.1', '2458172318');

INSERT INTO PUBLIC.DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('2', 'Amber.Williams', 'example-changelog.sql', NOW(), 7, '8:7db038f9d66960203d8a260e9751a2bd', 'sql', 'example comment', 'EXECUTED', 'example-context', 'example-label', '4.9.1', '2458172318');

-- Release Database Lock
UPDATE PUBLIC.DATABASECHANGELOGLOCK SET LOCKED = FALSE, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;

Liquibase command 'changelog-sync-sql' was executed successfully.