update-one-changeset-sql
Last published July 28, 2025
Note: This is a Liquibase Pro feature, so you need a Liquibase Pro License Key to use it.
The update-one-changeset-sql command is a helper command that allows you to inspect the SQL Liquibase will run to deploy the changeset specified in the update-one-changeset command. It is only available for Liquibase Pro users.
Uses
The update-one-changeset-sql
command is useful when you want to inspect the raw SQL that Liquibase uses to deploy your changeset when you run the update-one-changeset
command, so that you don't unintentionally make a mistake.
Syntax
Before running the update-one-changeset-sql
command, gather the following information from your changelog:
The author of the changeset you want to deploy.
The ID of the changeset you want to deploy.
The file path and name of the changeset you want to deploy.
Then run the update-one-changeset-sql
command, with your information:
liquibase update-one-changeset-sql --changelog-file=example-changelog.xml --changeset-id=2 --changeset-author=anotherdev --changeset-path=example-changelog.xml
For more command-specific help, type liquibase update-one-changeset-sql --help
into the command prompt.
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.
Parameters
Global parameters
Parameter | Definition | Requirement |
| Your Liquibase Pro license key | Required |
| File path to where the command output will be written. If not specified, output goes to | Optional |
Command parameters
Parameter | Definition | Requirement |
| The root changelog | Required |
| The name of the author for the changeset. Supports | Required |
| The changeset ID from the changelog. | Required |
| The path to the changelog containing the changeset you want to target. For example, you may have a root changelog ( If If If you only have one changelog, then | Required |
| The JDBC database connection URL. | Required |
| Fully-qualified class which specifies a | Optional |
| Path to a properties file for the | Optional |
| Specifies the changeset contexts to match. Contexts are tags you can add to changesets to control which changesets are executed in any particular migration run. Note: If you use Liquibase 4.23.0 or earlier, use the syntax | Optional |
| Name of the default catalog to use for the database connection | Optional |
| Name of the default schema to use for the database connection. If Note: In the properties file and Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set | Optional |
| The JDBC driver class | Optional |
| The JDBC driver properties file | Optional |
| Specifies the changeset labels to match. Labels are tags you can add to changesets to control which changesets will be executed in any migration run. | Optional |
| Password to connect to the target database. Tip: It is best practice to store sensitive data in a Secrets Management tool with Liquibase Pro. | Optional |
| Username to connect to the target database. Tip: It is best practice to store sensitive data in a Secrets Management tool with Liquibase Pro. | Optional |
Output
When successful, the update-one-changeset-sql
command produces the following output:
$ liquibase update-one-changeset-sql --changeset-id=2 --changeset-author=anotherdev --changeset-path=example-changelog.sql
-- Create Database Lock Table
CREATE TABLE DATABASECHANGELOGLOCK (ID INT NOT NULL, LOCKED BOOLEAN NOT NULL, LOCKGRANTED TIMESTAMP, LOCKEDBY VARCHAR(255), CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY KEY (ID));
-- Initialize Database Lock Table
DELETE FROM DATABASECHANGELOGLOCK;
INSERT INTO DATABASECHANGELOGLOCK (ID, LOCKED) VALUES (1, FALSE);
-- Lock Database
UPDATE DATABASECHANGELOGLOCK SET LOCKED = TRUE, LOCKEDBY = 'mmc-mbp.lan (192.168.86.155)', LOCKGRANTED = NOW() WHERE ID = 1 AND LOCKED = FALSE;
-- Create Database Change Log Table
CREATE TABLE DATABASECHANGELOG (ID VARCHAR(255) NOT NULL, AUTHOR VARCHAR(255) NOT NULL, FILENAME VARCHAR(255) NOT NULL, DATEEXECUTED TIMESTAMP NOT NULL, ORDEREXECUTED INT NOT NULL, EXECTYPE VARCHAR(10) NOT NULL, MD5SUM VARCHAR(35), DESCRIPTION VARCHAR(255), COMMENTS VARCHAR(255), TAG VARCHAR(255), LIQUIBASE VARCHAR(20), CONTEXTS VARCHAR(255), LABELS VARCHAR(255), DEPLOYMENT_ID VARCHAR(10));
--changeset example-changelog.sql::2::anotherdev
-- example comment
create table company (
id int primary key auto_increment not null,
name varchar(50) not null,
address1 varchar(50),
address2 varchar(50),
city varchar(30)
);
INSERT INTO DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('2', 'anotherdev', 'example-changelog.sql', NOW(), 1, '8:7db038f9d66960203d8a260e9751a2bd', 'sql', 'example comment', 'EXECUTED', 'example-context', 'example-label', 'DEV', '1888387896');
-- Release Database Lock
UPDATE DATABASECHANGELOGLOCK SET LOCKED = FALSE, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;
Liquibase command 'update-one-changeset-sql' was executed successfully.