The rollback-one-update-sql command is a helper command that allows you to inspect the SQL Liquibase will run to revert all changeset associated with the deploymentID specified in the rollback-one-update command. It is only available for Liquibase Pro users.
Uses
The rollback-one-update-sql command is typically used when you want inspect the raw SQL that Liquibase uses to revert all changesets associated with a specified deploymentId when you run the rollback-one-update command, so you don't unintentionally make a mistake.
Syntax
Before running the rollback-one-update-sql command, you can get the optional deploymentId of the changeset group you want to revert by running the history command.
Then run the rollback-one-update-sql command, with your information:
Name of the default catalog to use for the database
connection
Optional
--default-schema-name=<string>
Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.
Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.
Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.
Optional
--deployment-id=<string>
Specifies the deployment ID of all rows from the DATABASECHANGELOG table related to the changesets intended for rollback. If not supplied, Liquibase Pro will look up the most recent deployment ID from the DATABASECHANGELOG table and use it for the rollback.
Optional
--driver=<string>
The JDBC driver class
Optional
--driver-properties-file=<string>
The JDBC driver properties file
Optional
--output-default-catalog=<true|false>
Control whether names of objects in the default
catalog are fully qualified or not. If true, they
are. If false, only objects outside the default
catalog are fully qualified.
Default: true.
Optional
--output-default-schema=<true|false>
Control whether names of objects in the default
schema are fully qualified or not. If true, they
are. If false, only objects outside the default
schema are fully qualified.
Default: true.
Optional
--password=<string>
Password to connect to the target database.
Tip: It is a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro.
Optional
--rollback-script=<string>
The path to the script to use to perform the rollback. Only needed if the rollback is not already defined in the changelog, and if it is not a rollback statement that is automatically generated by Liquibase.
Optional
--username=<string>
Username to connect to the target database.
Tip: It is a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro.
Optional
Global parameters
Parameter
Definition
Requirement
globalArgs: { license-key: "<string>" }
Your Liquibase Pro license key
Required
globalArgs: { output-file: "<string>" }
File path to where the command output will be written. If not specified, output goes to STDOUT. See --output-file.
Name of the default catalog to use for the database
connection
Optional
cmdArgs: { default-schema-name: "<string>" }
Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.
Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.
Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.
Optional
cmdArgs: { deployment-id: "<string>" }
Specifies the deployment ID of all rows from the DATABASECHANGELOG table related to the changesets intended for rollback. If not supplied, Liquibase Pro will look up the most recent deployment ID from the DATABASECHANGELOG table and use it for the rollback.
Control whether names of objects in the default
catalog are fully qualified or not. If true, they
are. If false, only objects outside the default
catalog are fully qualified.
Default: true.
Control whether names of objects in the default
schema are fully qualified or not. If true, they
are. If false, only objects outside the default
schema are fully qualified.
Default: true.
Optional
cmdArgs: { password: "<string>" }
Password to connect to the target database.
Tip: It is a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro.
Optional
cmdArgs: { rollback-script: "<string>" }
The path to the script to use to perform the rollback. Only needed if the rollback is not already defined in the changelog, and if it is not a rollback statement that is automatically generated by Liquibase.
Optional
cmdArgs: { username: "<string>" }
Username to connect to the target database.
Tip: It is a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro.
Optional
Global parameters
Parameter
Definition
Requirement
liquibase.licenseKey: <string>
Your Liquibase Pro license key
Required
liquibase.outputFile: <string>
File path to where the command output will be written. If not specified, output goes to STDOUT. See --output-file.
Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.
Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.
Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.
Specifies the deployment ID of all rows from the DATABASECHANGELOG table related to the changesets intended for rollback. If not supplied, Liquibase Pro will look up the most recent deployment ID from the DATABASECHANGELOG table and use it for the rollback.
Control whether names of objects in the default
catalog are fully qualified or not. If true, they
are. If false, only objects outside the default
catalog are fully qualified.
Default: true.
Control whether names of objects in the default
schema are fully qualified or not. If true, they
are. If false, only objects outside the default
schema are fully qualified.
Default: true.
The path to the script to use to perform the rollback. Only needed if the rollback is not already defined in the changelog, and if it is not a rollback statement that is automatically generated by Liquibase.
Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.
Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.
Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.
Specifies the deployment ID of all rows from the DATABASECHANGELOG table related to the changesets intended for rollback. If not supplied, Liquibase Pro will look up the most recent deployment ID from the DATABASECHANGELOG table and use it for the rollback.
Control whether names of objects in the default
catalog are fully qualified or not. If true, they
are. If false, only objects outside the default
catalog are fully qualified.
Default: true.
Control whether names of objects in the default
schema are fully qualified or not. If true, they
are. If false, only objects outside the default
schema are fully qualified.
Default: true.
The path to the script to use to perform the rollback. Only needed if the rollback is not already defined in the changelog, and if it is not a rollback statement that is automatically generated by Liquibase.
Name of the default schema to use for the database connection. If defaultSchemaName is set, then objects do not have to be fully qualified. This means you can refer to just mytable instead of myschema.mytable.
Note: In the properties file and JAVA_OPTS only: in 4.18.0 and earlier, specify this parameter using the syntax defaultSchemaName. In 4.19.0 and later, use the syntax liquibase.command.defaultSchemaName.
Note: In Liquibase 4.12.0 and later, you can use mixed-case schema names if you set --preserve-schema-case to true. However, in Liquibase 4.12.0–4.22.0, the Liquibase validator still throws a DatabaseException error if you specify a mixed-case value of defaultSchemaName. In 4.23.0 and later, the Liquibase validator accepts any casing.
Specifies the deployment ID of all rows from the DATABASECHANGELOG table related to the changesets intended for rollback. If not supplied, Liquibase Pro will look up the most recent deployment ID from the DATABASECHANGELOG table and use it for the rollback.
Control whether names of objects in the default
catalog are fully qualified or not. If true, they
are. If false, only objects outside the default
catalog are fully qualified.
Default: true.
Control whether names of objects in the default
schema are fully qualified or not. If true, they
are. If false, only objects outside the default
schema are fully qualified.
Default: true.
The path to the script to use to perform the rollback. Only needed if the rollback is not already defined in the changelog, and if it is not a rollback statement that is automatically generated by Liquibase.
Tip: It is a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro.
Optional
* Liquibase checks the changelog and any nested changelogs for the definitions of the changeset to roll back.
Note: The username and passwordattributes are not required for connections and systems which use alternate means of authentication. Also, you can specify database credentials as part of the urlattribute.
When successful, the rollback-one-update-sql command produces the following output:
Liquibase Version: 4.9.1
Liquibase Pro 4.9.1by Liquibase licensed to Liquibase Pro Evaluation until Tue Jun 0718:00:00 MDT 2022
WARNING! Your license will expire in29 days!To renew Liquibase Pro please contact sales@liquibase.comor go to https://www.liquibase.org/download
Defaulting tolast deployment ID '2214257654'rollback-one-update executed for DBUSER@jdbc:h2:tcp://localhost:9090/mem:dev-- *********************************************************************--rollback deployment ID '2214257654'-- *********************************************************************-- Change Log: example-changelog.sql-- Ran at: 5/10/22, 2:26 PM-- Against: DBUSER@jdbc:h2:tcp://localhost:9090/mem:dev-- Liquibase version: 4.9.1-- *********************************************************************-- Lock DatabaseUPDATEPUBLIC.DATABASECHANGELOGLOCK SET LOCKED =TRUE, LOCKEDBY ='DESKTOP-SQVSSV2 (192.168.1.179)', LOCKGRANTED =NOW()WHERE ID =1AND LOCKED =FALSE;-- Rolling Back ChangeSet: example-changelog.sql::3::other.devALTERTABLE person DROPCOLUMN country;DELETEFROMPUBLIC.DATABASECHANGELOG WHERE ID ='3'AND AUTHOR ='other.dev'AND FILENAME ='example-changelog.sql';-- Rolling Back ChangeSet: example-changelog.sql::2::your.nameDROPTABLE company;DELETEFROMPUBLIC.DATABASECHANGELOG WHERE ID ='2'AND AUTHOR ='your.name'AND FILENAME ='example-changelog.sql';-- Rolling Back ChangeSet: example-changelog.sql::1::your.nameDROPTABLE person;DELETEFROMPUBLIC.DATABASECHANGELOG WHERE ID ='1'AND AUTHOR ='your.name'AND FILENAME ='example-changelog.sql';-- Release Database LockUPDATEPUBLIC.DATABASECHANGELOGLOCK SET LOCKED =FALSE, LOCKEDBY =NULL, LOCKGRANTED =NULLWHERE ID =1;
Liquibase command 'rollback-one-update-sql' was executed successfully.