update-to-tag
The update-to-tag
command applies sequential changes to your database from the newest changeset to the changeset with the tag you specified and applied earlier.
Uses
The update-to-tag
command is mainly used to apply changes sequentially, starting with the changesets from the top of the changelog file until the specified tag is reached. Even though there are other undeployed changes in the changelog, the command deploys only the changesets associated with a specific tag.
Command behavior
You must specify a tag with the tagDatabase
Change Type in your changelog file for update-to-tag
to work. The default behavior is:
- If you specify
tagDatabase
in your changelog,update-to-tag
deploys all changesets up to that tag. - If you omit
tagDatabase
from your changelog,update-to-tag
deploys all changes. - If you misspell the tag from
tagDatabase
when you run the command,update-to-tag
deploys all changes.
By default, if Liquibase cannot find your tag, it displays the following message:
The tag 'noexiste' was not found in the changelog 'changelog.xml'. All changesets in the changelog were deployed.
In Liquibase 4.30.0 and later, you can set the --strict
parameter to true
to ensure that Liquibase requires you to specify a valid tag before running the command. If --strict=true
and Liquibase cannot find your tag, it halts the update and displays the following message:
liquibase.exception.LiquibaseException: Command execution tag testTag does not match with any changeSet tag
Tip: Before running this command, it is a best practice to run tag-exists
to check whether your tag syntax is correct. It is also a best practice to copy+paste the name of the tag into the CLI so that you are less likely to misspell it.
Note: You cannot use the update-to-tag
command with reference to a tag created in the DATABASECHANGELOG table using the tag
command.
The following image shows that if you run the update-to-tag
command with the tag version1
, which should be specified in the changelog file as a tagDatabase
changeset, Liquibase will deploy createTable A
, createTable B
, and version1
without deploying createTable C
.
Note: Currently, the tagDatabase
Change Type is not supported in formatted SQL changelogs. The supported formats are XML, YAML, and JSON. If you have a root XML changelog that includes formatted SQL files, you can apply a changeset with a tag between the formatted SQL files. For more information, see Best Practices.
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd
http://www.liquibase.org/xml/ns/pro
http://www.liquibase.org/xml/ns/pro/liquibase-pro-latest.xsd">
<changeSet author="liquibase-docs" id="createTable-example a">
<createTable catalogName="sample"
remarks="A String"
schemaName="public"
tableName="person"
tablespace="A String">
<column name="address" type="varchar(255)"/>
</createTable>
</changeSet>
<changeSet author="liquibase-docs" id="createView-example">
<createView catalogName="sample"
encoding="UTF-8"
fullDefinition="true"
path="A String"
relativeToChangelogFile="true"
remarks="A String"
replaceIfExists="false"
schemaName="public"
viewName="v_person">select id, name from person where id > 10
</createView>
</changeSet>
<changeSet author="liquibase-docs" id="tagDatabase-example">
<tagDatabase tag="version1"/>
</changeSet>
<changeSet author="liquibase-docs" id="createTable-example b">
<createTable catalogName="sample"
remarks="A String"
schemaName="public"
tableName="person"
tablespace="A String"
<column name="address" type="varchar(255)"/>
</createTable>
</changeSet>
Additionally, it is best practice to run the update-to-tag-sql
helper command to inspect the update-to-tag
SQL, so you can correct any issues that may arise before running the command.
In Liquibase Pro 4.25.1 and later, you can automatically generate a database Update Report summarizing this command.
Syntax
To run the update-to-tag
command, specify the driver, classpath, and URL in the Liquibase properties file. You can also specify these properties in your command line.
Then run the update-to-tag
command:
liquibase update-to-tag --tag=myTag --changelog-file=example-changelog.xml
Note: The --tag=myTag
syntax was added in Liquibase 4.4. If you use an older version, specify your tag as a positional argument: <command> myTag
.
Command parameters
Attribute | Definition | Requirement |
---|---|---|
|
The root changelog |
Required |
|
The tag identifying which tagged changesets in the changelog to evaluate. Specify as |
Required |
|
The JDBC database connection URL. See Using JDBC URL in Liquibase. |
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 Tip: In Liquibase v4.23.0+, camelCase for Note: The syntax |
Optional |
|
The JDBC driver class |
Optional |
|
The JDBC driver properties file |
Optional |
|
Liquibase Pro only. Use this argument only if you are specifying |
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 a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro. |
Optional |
|
Enables a report at the command level. Overrides the global argument |
Optional |
|
Specifies the name of the report file at the command level. Overrides the global argument |
Optional |
|
Specifies the file path to the report file at the command level. Overrides the global argument |
Optional |
|
Liquibase Pro only. If any changeset in a deployment fails, Note: A changeset marked |
Optional |
|
Liquibase 4.24.0+. Produces a summary list of any changesets skipped and why they were skipped. Valid values are Note: Liquibase may display one or multiple reasons for halting deployment of a changeset. If Liquibase cannot resolve a halting reason, it does not evaluate the changeset for other possible halting reasons. |
Optional |
|
Liquibase 4.24.0+. Summary output to report update summary results. Valid values are |
Optional |
|
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 |
Attribute | Definition | Requirement |
---|---|---|
|
The root changelog |
Required |
|
The tag identifying which tagged changesets in the changelog to evaluate. Specify as |
Required |
|
The JDBC database connection URL. See Using JDBC URL in Liquibase. |
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 Tip: In Liquibase v4.23.0+, camelCase for Note: The syntax |
Optional |
|
The JDBC driver class |
Optional |
|
The JDBC driver properties file |
Optional |
|
Liquibase Pro only. Use this argument only if you are specifying |
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 a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro. |
Optional |
|
Enables a report at the command level. Overrides the global argument |
Optional |
|
Specifies the name of the report file at the command level. Overrides the global argument |
Optional |
|
Specifies the file path to the report file at the command level. Overrides the global argument |
Optional |
|
Liquibase Pro only. If any changeset in a deployment fails, Note: A changeset marked |
Optional |
|
Liquibase 4.24.0+. Produces a summary list of any changesets skipped and why they were skipped. Valid values are Note: Liquibase may display one or multiple reasons for halting deployment of a changeset. If Liquibase cannot resolve a halting reason, it does not evaluate the changeset for other possible halting reasons. |
Optional |
|
Liquibase 4.24.0+. Summary output to report update summary results. Valid values are |
Optional |
|
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 |
Attribute | Definition | Requirement |
---|---|---|
|
The root changelog |
Required |
|
The tag identifying which tagged changesets in the changelog to evaluate. Specify as |
Required |
|
The JDBC database connection URL. See Using JDBC URL in Liquibase. |
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 Tip: In Liquibase v4.23.0+, camelCase for Note: The syntax |
Optional |
|
The JDBC driver class |
Optional |
|
The JDBC driver properties file |
Optional |
|
Liquibase Pro only. Use this argument only if you are specifying |
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 a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro. |
Optional |
|
Enables a report at the command level. Overrides the global argument |
Optional |
|
Specifies the name of the report file at the command level. Overrides the global argument |
Optional |
|
Specifies the file path to the report file at the command level. Overrides the global argument |
Optional |
|
Liquibase Pro only. If any changeset in a deployment fails, Note: A changeset marked |
Optional |
|
Liquibase 4.24.0+. Produces a summary list of any changesets skipped and why they were skipped. Valid values are Note: Liquibase may display one or multiple reasons for halting deployment of a changeset. If Liquibase cannot resolve a halting reason, it does not evaluate the changeset for other possible halting reasons. |
Optional |
|
Liquibase 4.24.0+. Summary output to report update summary results. Valid values are |
Optional |
|
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 |
Attribute | Definition | Requirement |
---|---|---|
|
The root changelog |
Required |
|
The tag identifying which tagged changesets in the changelog to evaluate. Specify as |
Required |
|
The JDBC database connection URL. See Using JDBC URL in Liquibase. |
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 Tip: In Liquibase v4.23.0+, camelCase for Note: The syntax |
Optional |
|
The JDBC driver class |
Optional |
|
The JDBC driver properties file |
Optional |
|
Liquibase Pro only. Use this argument only if you are specifying |
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 a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro. |
Optional |
|
Enables a report at the command level. Overrides the global argument |
Optional |
|
Specifies the name of the report file at the command level. Overrides the global argument |
Optional |
|
Specifies the file path to the report file at the command level. Overrides the global argument |
Optional |
|
Liquibase Pro only. If any changeset in a deployment fails, Note: A changeset marked |
Optional |
|
Liquibase 4.24.0+. Produces a summary list of any changesets skipped and why they were skipped. Valid values are Note: Liquibase may display one or multiple reasons for halting deployment of a changeset. If Liquibase cannot resolve a halting reason, it does not evaluate the changeset for other possible halting reasons. |
Optional |
|
Liquibase 4.24.0+. Summary output to report update summary results. Valid values are |
Optional |
|
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 |
Attribute | Definition | Requirement |
---|---|---|
|
The root changelog |
Required |
|
The tag identifying which tagged changesets in the changelog to evaluate. Specify as |
Required |
|
The JDBC database connection URL. See Using JDBC URL in Liquibase. |
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 Tip: In Liquibase v4.23.0+, camelCase for Note: The syntax |
Optional |
|
The JDBC driver class |
Optional |
|
The JDBC driver properties file |
Optional |
|
Liquibase Pro only. Use this argument only if you are specifying |
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 a best practice to store sensitive data in a Secrets Management tool with Liquibase Pro. |
Optional |
|
Enables a report at the command level. Overrides the global argument |
Optional |
|
Specifies the name of the report file at the command level. Overrides the global argument |
Optional |
|
Specifies the file path to the report file at the command level. Overrides the global argument |
Optional |
|
Liquibase Pro only. If any changeset in a deployment fails, Note: A changeset marked |
Optional |
|
Liquibase 4.24.0+. Produces a summary list of any changesets skipped and why they were skipped. Valid values are Note: Liquibase may display one or multiple reasons for halting deployment of a changeset. If Liquibase cannot resolve a halting reason, it does not evaluate the changeset for other possible halting reasons. |
Optional |
|
Liquibase 4.24.0+. Summary output to report update summary results. Valid values are |
Optional |
|
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 |
*Liquibase will check the changelog and any nested changelogs for definitions of the changesets to update.
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.
Output
Liquibase Version: 4.9.1
Liquibase Community 4.9.1 by Liquibase
Running Changeset: example-changelog.sql::1::your.name
Running Changeset: example-changelog.sql::2::your.name
Running Changeset: example-changelog.sql::3::other.dev
Liquibase command 'update-to-tag' was executed successfully.