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.