# Liquibase

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com/zh-cn/help/idea/llms.txt).

> **TL;DR**
> 必需插件： [Liquibase](https://plugins.jetbrains.com/plugin/23741-liquibase)（捆绑）

在 IntelliJ IDEA 2024.1 版本之前，部分 Liquibase 功能仅可通过 [JPA Buddy 插件](jpa-buddy.html) 使用。 下方视频演示了这些现在可以通过 Liquibase 插件使用的功能。

[Video](https://www.youtube.com/v/26qri-FIwWo)

要启用相应功能，请确保项目包含 Liquibase 依赖项。 它还提供了一系列操作，可以快速生成更改日志、运行它们、预览 SQL 语句等。

Procedure: 将 Liquibase 添加到现有项目中。?

1. 在编辑器中打开构建文件（  `pom.xml`  或  `build.gradle` ，具体取决于项目中使用的 [构建工具](build-tools.html)）。

2. 添加 Liquibase 库，并确保其版本与项目的其余部分匹配：

Maven:

```XML
<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
    <version>4.32.0</version>
</dependency>

```

Gradle (Groovy):

```GROOVY
implementation 'org.liquibase:liquibase-core:4.32.0'

```

Gradle (Kotlin):

```KOTLIN
implementation("org.liquibase:liquibase-core:4.32.0")

```

3. （可选）如果要使用 Maven 或 Gradle 运行 Liquibase 命令，请添加专用插件：

Maven:

```XML
<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>5.0.4</version>

    <configuration>
        <url>${YOUR_DATABASE_URL}</url>
        <username>${YOUR_DATABASE_USERNAME}</username>
        <password>${YOUR_DATABASE_PASSWORD}</password>
    </configuration>
</plugin>

```

有关配置插件的更多信息，请参阅 [Liquibase 官方文档](https://docs.liquibase.com/secure/integration-guide-5-2-2/maven-properties)。

Gradle (Groovy):

```GROOVY
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.liquibase:liquibase-core:5.0.4'
    }
}

plugins {
    id 'org.liquibase.gradle' version '3.1.0'
}

dependencies {
    liquibaseRuntime 'org.liquibase:liquibase-core:5.0.4'
    liquibaseRuntime 'org.liquibase:liquibase-groovy-dsl:4.0.1'
    liquibaseRuntime 'info.picocli:picocli:4.7.7'
    liquibaseRuntime '<DATABASE DRIVER>'
}

liquibase {
    activities {
        main {
            changelogFile 'src/main/resources/db/changelog/db.changelog-master.xml'
            url '<YOUR DATABASE URL>'
            username '<YOUR DATABASE USERNAME>'
            password '<YOUR DATABASE PASSWORD>'
        }
    }
}

```

有关配置插件的更多信息，请参阅 [GitHub 上的 Liquibase Gradle Plugin 仓库](https://github.com/liquibase/liquibase-gradle-plugin/blob/main/doc/usage.md#usage)。

Gradle (Kotlin):

```KOTLIN

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.liquibase:liquibase-core:5.0.4")
    }
}

plugins {
    id("org.liquibase.gradle") version "3.1.0"
}

dependencies {
    liquibaseRuntime("org.liquibase:liquibase-core:5.0.4")
    liquibaseRuntime("org.liquibase:liquibase-groovy-dsl:4.0.1")
    liquibaseRuntime("info.picocli:picocli:4.7.7")
    liquibaseRuntime("<DATABASE DRIVER>")
}

liquibase {
    activities.register("main") {
        arguments = mapOf(
            "changelogFile" to "src/main/resources/db/changelog/db.changelog-master.xml",
            "url" to "<YOUR DATABASE URL>",
            "username" to "<YOUR DATABASE USERNAME>",
            "password" to "<YOUR DATABASE PASSWORD>"
        )
    }
}


```

有关配置插件的更多信息，请参阅 [GitHub 上的 Liquibase Gradle Plugin 仓库](https://github.com/liquibase/liquibase-gradle-plugin/blob/main/doc/usage.md#usage)。

4. 按 `Ctrl+Shift+O` (Windows), `Ctrl+Shift+O` (macOS), `Ctrl+Shift+O` (IntelliJ IDEA Classic (macOS)), `Ctrl+Shift+O` (macOS System Shortcuts), `Ctrl+Shift+O` (XWin), `Ctrl+Shift+O` (GNOME), `Ctrl+Shift+O` (KDE), `Ctrl+Shift+O` (Emacs), `Ctrl+Shift+O` (Sublime Text), `Ctrl+Shift+O` (Sublime Text (macOS)), `Ctrl+Shift+O` (Visual Studio), `Ctrl+Shift+O` (Visual Studio (macOS)), `Ctrl+Shift+O` (NetBeans), `Ctrl+Shift+O` (Eclipse), `Ctrl+Shift+O` (Eclipse (macOS)) 导入更改。

有关使用构建工具的更多信息，请参阅 [Maven](maven-support.html) 或 [Gradle](gradle.html)。

Procedure: 生成初始变更日志。

借助 IntelliJ IDEA，可以根据实体类中提供的映射初始化数据库架构。 它将为您当前的实体生成一组 DDL 命令，以 Liquibase 更改日志 的形式呈现。

1. 打开 [Persistence](persistence-tool-window.html) 工具窗口。

2. 在工具窗口中，右键点击持久化单元、映射上下文或实体，然后选择  `![加号图标](https://resources.jetbrains.com/help/img/idea/2026.3/intellij.platform.ide.expui.general.add.svg) 新建 | ![带蓝色加号的数据库图标](https://resources.jetbrains.com/help/img/idea/2026.3/jpa-model.icons.newui.initLiquibaseChangelog.svg) Liquibase 初始化更新日志`  。

3. 在打开的   初始化架构更新日志   对话框中，选择迁移应基于的数据模型：

* 模型 ：来自以下项之一的实体映射： * [持久化单元](persistence-tool-window.html#create-persistence-unit)（在 JPA 和 Spring Data JPA 项目中） * [映射上下文](persistence-tool-window.html#create-mapping-context)（在 Spring Data JDBC 项目中）

* 数据库 ：来自 [已连接的数据库](connecting-to-a-database.html) 的架构

![Flyway 初始化架构迁移对话框](https://resources.jetbrains.com/help/img/idea/2026.3/init_schema_changelog_dialog.png)

根据所选内容，IntelliJ IDEA 会自动填写持久化单元、映射上下文或数据库连接，必要时可以更改。

4. 点击   OK  。

5. 在打开的 [变更日志预览对话框](#changelog-preview-window)中，配置变更日志并点击   保存  。

## 更新日志预览窗口

![changelog-preview](https://resources.jetbrains.com/help/img/idea/2026.3/changelog-preview.png)

如果要将变更日志保存为常规文件，则可使用以下配置选项：

* 目录 和 文件名 字段负责配置生成的更改日志的位置。 如果已存在具有指定名称的更改日志，您将收到一个警告提示，然后更改将被追加到该更改日志中。

* 您可以使用 包含到 、 包含文件夹 和 包含上下文 来指定是否应在另一个 更改日志 中包含变更日志。 如果您勾选 包含文件夹 框，它会生成整个文件夹的 include 语句，而不仅仅是当前的 更改日志。

* 从 文件类型 下拉列表中，您可以选择 Liquibase 支持的四种文件类型之一（YAML、JSON、SQL、XML），IntelliJ IDEA 将在这些文件中生成变更日志。

如果您希望将变更日志保存为临时文件，那么您只能配置其名称和类型。

![liquibase-preview-scratch](https://resources.jetbrains.com/help/img/idea/2026.3/liquibase-preview-scratch.png)

窗口的左侧显示将生成的更改集预览。 您可以点击每个更改以查看其外观。 要将多个更改合并到一个更改集中或忽略它们，只需拖放即可。 预览窗口的左上角包含各种用于修改最终变更日志的操作：

![add-changelog-action](https://resources.jetbrains.com/help/img/idea/2026.3/add-changelog-action.jpeg)

提供以下操作：

* 添加更新日志 — 创建次要更新日志

* 添加变更集 — 在选定的更改日志中创建一个新的更改集

* 从更改日志中移除 具有以下选项： * 从更改日志中移除 — 只需从当前变更日志中删除更改 * 移除并忽略 — 移除这些更改并将其添加到 已忽略 ，这样它们也可以从未来的变更集中排除 * 从忽略状态还原 — 将更改从 已忽略 移动到更改日志

* 设置上下文 （用于变更集）

* 设置标签 （用于变更集）

* 显示其他操作 — 根据危险等级选择所有更改，展开/折叠所有更改

Procedure: 创建空变更日志

1. 打开 [项目](project-tool-window.html) 工具窗口（ `Alt+1` (Windows), `⌘ 1` (macOS), `⌘ 1` (IntelliJ IDEA Classic (macOS)), `⌘ 1` (macOS System Shortcuts), `Alt+1` (XWin), `Alt+1` (GNOME), `Alt+1` (KDE), `Alt+1` (Emacs), `Alt+1` (Sublime Text), `⌘ 1` (Sublime Text (macOS)), `Ctrl+Alt+L` (Visual Studio), `⌘ ⌥ L` (Visual Studio (macOS)), `Ctrl+1` (NetBeans), `Alt+1` (Eclipse), `Alt+1` (Eclipse (macOS))）。

2. 右键点击包含变更日志的文件夹，然后选择  `新建 | ![新变更日志图标](https://resources.jetbrains.com/help/img/idea/2026.3/intellij.liquibase.core.icons.newui.addChangelog.svg) Liquibase 空更新日志` 。

* 或者，选择文件夹，按 `Alt+Insert` (Windows), `⌘ N` (macOS), `⌃ N` (IntelliJ IDEA Classic (macOS)), `⌘ N` (macOS System Shortcuts), `Alt+Insert` (XWin), `Alt+Insert` (GNOME), `Alt+Insert` (KDE), `Alt+Insert` (Emacs), `Alt+Insert` (Sublime Text), `⌘ N` (Sublime Text (macOS)), `Alt+Insert` (Visual Studio), `⌘ ⌃ N` (Visual Studio (macOS)), `Alt+Insert` (NetBeans), `Alt+Insert` (Eclipse), `⌘ N` (Eclipse (macOS))，然后选择 ![新变更日志图标](https://resources.jetbrains.com/help/img/idea/2026.3/intellij.liquibase.core.icons.newui.addChangelog.svg) Liquibase 空更新日志 。

> **Note:**
> 如果此操作不可用，请验证该文件夹是否与 [Liquibase 插件设置](#liquibase-settings)中的主目录或辅助目录匹配。

3. 在打开的   新建 Liquibase 更新日志   弹出窗口中，指定文件名并选择格式（XML 或 YAML）。

IntelliJ IDEA 会使用   Liquibase 更新日志   模板（来自 [文件和代码模板](jetbrains://tool/settings?name=Editor--File+and+Code+Templates&tool=IU)）创建变更日志，并在编辑器中打开它。

## 主要和次要更新日志

IntelliJ IDEA 允许您将变更记录分为两类：主要和次要。 一种用例是分离可以自动运行的安全更改与需要您注意且手动运行的更改。

可以按类型自动分隔更改（在  `工具 | 数据库版本控制 | 差异变更` 中）。 或者，您可以使用   添加更新日志   操作在“预览”窗口中手动创建次要变更日志。 然后，您可以简单地将所需的变更集拖到新的变更日志中。

默认情况下，Primary 和 Secondary 变更日志会生成在不同的目录中，您可以在插件设置中进行自定义。 请在  `工具 | 数据库版本管理 | Liquibase`  部分的 IDE 设置中了解更多信息。

Procedure: 生成差异变更日志

1. 确保 IntelliJ IDEA 已 [连接到数据库](managing-data-sources.html#create_a_data_source)。

> **Tip:**
> 如果项目使用 [Spring](spring-support.html)、 [Micronaut](micronaut.html) 或 [Quarkus](quarkus.html)，可以直接从配置文件（  `application.properties`  或  `application.yml` ）快速创建数据库连接。
>
>
>
> 为此，请在编辑器中打开该文件，然后在编辑器装订区域中点击 ![数据库连接图标](https://resources.jetbrains.com/help/img/idea/2026.3/javaee-persistence-impl.icons.expui.add-db-from-config.svg)   从现有属性创建新数据源  。

2. 打开 [数据库](database-tool-window.html) 工具窗口，右键点击数据库或表，然后选择 ![带有两个蓝色箭头的数据库图标](https://resources.jetbrains.com/help/img/idea/2026.3/jpa-model.icons.newui.diffLiquibaseChangelog.svg)   创建 Liquibase 更新日志…   。

* 或者，打开 [持久化](persistence-tool-window.html) 工具窗口，右键点击持久化单元、映射上下文或实体，然后选择 `![加号图标](https://resources.jetbrains.com/help/img/idea/2026.3/intellij.platform.ide.expui.general.add.svg) 新建 | ![带有两个蓝色箭头的数据库图标](https://resources.jetbrains.com/help/img/idea/2026.3/jpa-model.icons.newui.diffLiquibaseChangelog.svg) Liquibase 更改日志……` 。

3. 在打开的   差异数据库更新日志   对话框中，选择要比较的数据模型：

* 源(referenceURL) (当前数据模型)： * 数据库 ：来自 [已连接的数据库](connecting-to-a-database.html) 的架构 * 模型 ：来自以下项之一的实体映射： * [持久化单元](persistence-tool-window.html#create-persistence-unit)（在 JPA 和 Spring Data JPA 项目中） * [映射上下文](persistence-tool-window.html#create-mapping-context)（在 Spring Data JDBC 项目中）

* 目标(URL) (先前数据模型)： * 数据库 ：来自已连接数据库的架构 * 快照 ：来自 [数据模型快照](database-versioning.html#generate-data-model-snapshot) 的架构

![差异数据库变更日志对话框](https://resources.jetbrains.com/help/img/idea/2026.3/diff_database_changelog_dialog.png)

如果选择   数据库   或   模型  ，IntelliJ IDEA 会自动填写持久化单元、映射上下文或数据库连接，必要时可以更改。

> **Tip:**
> 如果经常在相同的数据库连接与持久化单元或映射上下文之间生成差异迁移，可以选择   持久性单元的默认连接  ，以便 IntelliJ IDEA 今后记住此关联。

4. 点击   OK  。

5. 在打开的 [变更日志预览对话框](#changelog-preview-window)中，配置变更日志并点击   保存  。

Procedure: 使用结构工具窗口浏览更改日志

如果您的 Liquibase 更改日志文件中有许多更改集， [逻辑视图](viewing-structure-of-a-source-file.html#logical-structure)的   结构  工具窗口可以帮助您快速预览文件并浏览其中的内容。 它将更改类型显示为单独的节点，您可以展开这些节点以获取更多详细信息。

逻辑视图适用于 XML 和 YAML 更改日志文件。

1. 在编辑器中打开您的更改日志文件后，打开   结构  工具窗口：  `查看 | 工具窗口 | 结构` 。

或者按 `Alt+7` (Windows), `⌘ 7` (macOS), `⌘ 7` (IntelliJ IDEA Classic (macOS)), `⌘ 7` (macOS System Shortcuts), `Alt+7` (XWin), `Alt+7` (GNOME), `Alt+7` (KDE), `Alt+7` (Emacs), `Alt+7` (Sublime Text), `⌘ 7` (Sublime Text (macOS)), `Ctrl+Alt+F` (Visual Studio), `⌃ ⌥ F` (Visual Studio (macOS)), `Ctrl+7` (NetBeans), `Alt+7` (Eclipse), `⌘ 7` (Eclipse (macOS))。

2. 在   结构  工具窗口中，打开   逻辑  选项卡。

点击任意更改以导航到更改日志文件中的定义。 对于  `包括` 和  `includeAll` 标签，您将被重定向到包含文件中的更改集。

![结构工具窗口](https://resources.jetbrains.com/help/img/idea/2026.3/structure_tool_window_liquibase.png)

## 部署更改

准备好更改日志后，可使用专用 [Liquibase 运行配置](#liquibase-run-configuration)触发更新并使数据库与代码同步。 可以从 IntelliJ IDEA 中的多个位置启动此运行配置。

Procedure: 从运行微件运行更新

> **Note:**
> 要使用此功能，需先 [创建 Liquibase 运行配置](#create-run-configuration)。

* 如果微件中已选中 Liquibase 运行配置，请点击 ![](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.run.run.svg)   运行  。

* 或者按 `Shift+F10` (Windows), `⌃ R` (macOS), `⇧ F10` (IntelliJ IDEA Classic (macOS)), `⌥ ⇧ R` (macOS System Shortcuts), `Shift+F10` (XWin), `Shift+F10` (GNOME), `Shift+F10` (KDE), `Shift+F10` (Emacs), `Shift+F10` (Sublime Text), `Shift+F10` (Sublime Text (macOS)), `Ctrl+F5` (Visual Studio), `⌃ F5` (Visual Studio (macOS)), `F6` (NetBeans), `Alt+Shift+X` (Eclipse), `⌘ ⇧ F11` (Eclipse (macOS))。

* 如果运行微件中选择了其他配置，请点击其名称。 在弹出窗口中，找到 Liquibase 运行配置并点击其右侧的 ![](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.run.run.svg)   运行  。

* 或者按 `Alt+Shift+F10` (Windows), `⌃ ⌥ R` (macOS), `⌥ ⇧ F10` (IntelliJ IDEA Classic (macOS)), `⌃ ⌥ R` (macOS System Shortcuts), `Alt+Shift+F10` (XWin), `Alt+Shift+F10` (GNOME), `Alt+Shift+F10` (KDE), `Alt+Shift+F10` (Emacs), `Alt+Shift+F10` (Sublime Text), `⌃ ⌥ R` (Sublime Text (macOS)), `Ctrl+Alt+Shift+R` (Visual Studio), `⌘ ⌥ ⇧ R` (Visual Studio (macOS)), `Alt+Shift+F10` (NetBeans), `Alt+Shift+F10` (Eclipse), `⌃ ⌥ R` (Eclipse (macOS))。 在弹出窗口中，选择 Liquibase 运行配置。

IntelliJ IDEA 会在 [运行](run-tool-window.html) 工具窗口中启动运行配置。

Procedure: 从工具窗口运行更新

> **Note:**
> 如果使用该功能时没有现有的 Liquibase 运行配置，系统会提示您 [创建一个](#create-run-configuration)。
>
>
>
> ![仅限 Spring 项目](https://resources.jetbrains.com/help/img/idea/2026.3/spring.icons.expui.spring.svg) 在 [Spring](spring-support.html) 项目中，如果使用此功能时没有现有的 Liquibase 运行配置，IDE 将尝试根据 Spring Boot 配置文件创建一个。

可以在以下工具 Windows 启动 Liquibase 运行配置：

* [持久性](persistence-tool-window.html)工具窗口：

* 右键点击工具窗口中的任意位置，然后选择 ![](https://resources.jetbrains.com/help/img/idea/2026.3/jpa-model.icons.newui.liquibaseUpdate.svg) 运行 Liquibase 更新… 。

* [数据库](database-tool-window.html)工具窗口：

* 转到工具栏并选择 ![](https://resources.jetbrains.com/help/img/idea/2026.3/jpa-model.icons.newui.liquibaseUpdate.svg) 运行 Liquibase 更新… 。

* 右键点击数据库、架构或表，然后选择 ![](https://resources.jetbrains.com/help/img/idea/2026.3/jpa-model.icons.newui.liquibaseUpdate.svg) 运行 Liquibase 更新… 。

IntelliJ IDEA 会在 [运行](run-tool-window.html) 工具窗口中启动运行配置。

Procedure: 从根更改日志运行更新

> **Note:**
> ![仅限 Spring 项目](https://resources.jetbrains.com/help/img/idea/2026.3/spring.icons.expui.spring.svg) 此功能仅适用于 [Spring](spring-support.html) 项目。
>
>
>
> 如果使用此功能时没有现有的 Liquibase 运行配置，IDE 将尝试根据 Spring Boot 配置文件创建一个。

可以直接从 [根变更日志](https://docs.liquibase.com/community/implementation-guide-5-0/set-up-your-changelog-structure)文件启动 Liquibase 运行配置，前提是配置文件中的  `spring.liquibase.change-log`  属性指向它。

1. 在编辑器中打开根变更日志文件。

2. 在 [装订区域](editor-gutter.html)，点击 ![](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.run.run.svg)   运行 Liquibase 更新…  。

![装订区域中运行 Liquibase Update 图标的位置](https://resources.jetbrains.com/help/img/idea/2026.3/liquibase_update_gutter_icon.png)

IntelliJ IDEA 会在 [运行](run-tool-window.html) 工具窗口中启动运行配置。

Procedure: 从配置文件运行更新

可以从以下文件启动 Liquibase 运行配置：

* Liquibase 配置文件（ `liquibase.properties` ）

* [Spring Boot](spring-boot.html) 配置文件（ `application.properties` 或 `application.yml` ）

1. 在编辑器中打开配置文件。

2. 在 [装订区域](editor-gutter.html)中，点击 ![指向右侧的绿色三角形图标](https://resources.jetbrains.com/help/img/idea/2026.3/intellij.platform.ide.expui.run.run.svg)   运行 Liquibase 更新…   。

> **Note:**
> 如果此图标未显示在配置文件中，请参阅 [故障排除指南](#cannot-run-migrations-from-config-file)。

IntelliJ IDEA 会在 [运行](run-tool-window.html) 工具窗口中启动运行配置。

> **Tip:**
> 如果更新失败，   运行   工具窗口将提供指向发生错误的更新日志的链接。
>
>
>
> ![导致错误高亮的更新日志名称，在运行工具窗口中显示。 ](https://resources.jetbrains.com/help/img/idea/2026.3/liquibase_update_error_location.png)
>
> 点击链接后，IDE 会在编辑器中打开更新日志，并将文本光标定位到导致错误的更改集。

### 更改日志和更改集的状态

> **Note:**
> 此功能仅适用于用 YAML 或 XML 编写的更改日志。

通常，如果要检查哪些变更日志已应用，需要运行 Liquibase 的 [变更跟踪命令](https://docs.liquibase.com/secure/reference-guide-5-2/database-inspection-change-tracking-and-utility-commands/what-are-change-tracking-commands)，或在数据库中检查其 [变更日志表](https://docs.liquibase.com/secure/user-guide-5-2/what-is-the-databasechangelog-table)。 IntelliJ IDEA 通过在 IDE 中直接显示更改的状态，提供了更快捷的替代方式。

整个更改日志文件的状态会显示在   项目   工具窗口中（ `Alt+1` (Windows), `⌘ 1` (macOS), `⌘ 1` (IntelliJ IDEA Classic (macOS)), `⌘ 1` (macOS System Shortcuts), `Alt+1` (XWin), `Alt+1` (GNOME), `Alt+1` (KDE), `Alt+1` (Emacs), `Alt+1` (Sublime Text), `⌘ 1` (Sublime Text (macOS)), `Ctrl+Alt+L` (Visual Studio), `⌘ ⌥ L` (Visual Studio (macOS)), `Ctrl+1` (NetBeans), `Alt+1` (Eclipse), `Alt+1` (Eclipse (macOS))）。

![项目工具窗口中的 Liquibase 图标：应用迁移为对号，失败迁移为感叹号](https://resources.jetbrains.com/help/img/idea/2026.3/liquibase_status_icons.png)

每个更改日志由 Liquibase 徽标 ( ![](https://resources.jetbrains.com/help/img/idea/2026.3/intellij.platform.ide.providers.liquibase.svg)) 表示，其状态由徽标右下角的小图标反映：

|  图标  |  状态  |
| --- | --- |
|  ![绿色勾选图标](https://resources.jetbrains.com/help/img/idea/2026.3/intellij.platform.ide.expui.status.success.svg)  |  更改日志中的所有更改集已成功应用到数据库。  |
|  ![红色感叹号图标](https://resources.jetbrains.com/help/img/idea/2026.3/intellij.platform.ide.expui.status.error.svg)  |     更改日志已运行，但其中有更改集失败。       将鼠标悬停在文件名称上可查看更多错误信息。      ![鼠标悬停在带下划线的更改日志上时，在项目工具窗口显示的错误详情](https://resources.jetbrains.com/help/img/idea/2026.3/liquibase-error-details-project-tw.png)    要检查哪个更改集导致错误，请在编辑器中打开带下划线的更改日志，并查找装订区域中的红色感叹号。      ![编辑器装订区域中更改集旁的红色感叹号](https://resources.jetbrains.com/help/img/idea/2026.3/liquibase-error-gutter-icon.png)    可以点击装订区域图标以再次查看错误详细信息。      > **Note:** > 只有在通过以下任一方式从 IDE 运行更新时，才会显示下划线和图标： > > > > * [启动 Liquibase 运行配置](#deploy-changes) > > * [启动 Spring Boot 应用程序](spring-boot.html#run-a-spring-boot-application) > > * [运行 liquibase:update Maven 目标](work-with-maven-goals.html#run_goal) > > * [运行 update Gradle 任务](work-with-gradle-tasks.html#gradle_tasks) > > > > 重新启动 IDE 时，图标和错误详情都会被清除。    |
|  (无)  |     在以下情况下不会显示状态图标：        * 更改日志尚未运行。    * 该变更日志之前已运行，但其中一个变更集失败。     > **Note:** > 如所有更改日志都未显示状态图标，请参阅 [故障排除指南](#no-status-icons)。    |

打开更改日志文件时，各更改集的状态会显示在编辑器装订区域。

![打开的更改日志文件编辑器装订区域中的状态图标](https://resources.jetbrains.com/help/img/idea/2026.3/liquibase_status_icons_gutter.png)

## Liquibase 运行配置

Liquibase   [运行配置](run-debug-configuration.html)可让您无需运行完整应用程序或使用终端，即可将更改部署到已连接的数据库。 底层该配置会运行 [Liquibase 更新命令](https://docs.liquibase.com/secure/reference-guide-5-2/init-update-and-rollback-commands/update)。

Procedure: 创建 Liquibase 运行配置

1. 打开   运行/调试配置  对话框：

* 在主工具栏，点击 [运行微件](guided-tour-around-the-user-interface.html#toolbar)并选择 编辑配置… 。

* 或者，转到 `运行 | 编辑配置…` 。

2. 在对话框左侧，选择  `![](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.general.add.svg) 添加新配置 | ![](https://resources.jetbrains.com/help/img/idea/2026.3/intellij.platform.ide.providers.liquibase.svg) Liquibase`  。

3. 设置 [运行配置选项。](#run-configuration-options)

![Liquibase 运行配置选项](https://resources.jetbrains.com/help/img/idea/2026.3/workspace.xml` 。     |

#### 必填选项

|  条目  |  描述  |
| --- | --- |
|    根更新日志文件:    |  指定您的 [根更改日志](https://docs.liquibase.com/community/implementation-guide-5-0/set-up-your-changelog-structure)文件路径。  |
|    数据库连接    |     选择 Liquibase 在运行变更日志时应以哪个数据库为目标。       需从   数据库   工具窗口选择现有 [数据源](managing-data-sources.html)，或点击 ![](https://resources.jetbrains.com/help/img/idea/2026.3/app-client.expui.general.add.svg) 新建。     |

#### 其他选项

要将这些选项添加到运行配置中，请在对话框右侧选择   修改选项  ，然后从列表中选择相关选项。

|  条目  |  描述  |
| --- | --- |
|    上下文    |     指定 [上下文筛选器](https://docs.liquibase.com/secure/reference-guide-5-2/changelog-attributes/what-are-contexts)以缩小 Liquibase 在更新期间要运行的更改集范围。       如需填写多个值，请用逗号分隔。     |
|    标签    |     指定 [标签筛选器](https://docs.liquibase.com/secure/reference-guide-5-2/changelog-attributes/what-are-labels)以缩小 Liquibase 在更新期间要运行的更改集范围。       如需填写多个值，请用逗号分隔。     |
|    默认架构    |     指定 Liquibase 需要管理的架构。       可在 [Liquibase 官方文档](https://docs.liquibase.com/secure/reference-guide-5-1-1/parameters/default-schema-name)中详细了解该设置。     |
|    Liquibase 架构    |     指定 Liquibase 用于创建 [跟踪表](https://docs.liquibase.com/secure/user-guide-5-2/what-is-the-databasechangelog-table)的架构。       可在 [Liquibase 官方文档](https://docs.liquibase.com/secure/reference-guide-5-2-1/parameters/liquibase-schema-name)中详细了解该设置。     |
|    日志级别    |     选择在更新过程中需要被日志记录的最低严重级别。       可在 [Liquibase 官方文档](https://docs.liquibase.com/secure/reference-guide-5-2/parameters/log-level)中详细了解该设置。     |

## Liquibase 设置

![设置对话框中的 Liquibase 插件设置](https://resources.jetbrains.com/help/img/idea/2026.3/liquibase-settings.png)

### 基础设置

|  条目  |  描述  |
| --- | --- |
|    Liquibase 版本    |     指定项目中要使用的 Liquibase 版本。       如果此字段为空，IDE 将使用构建文件中的版本。     |
|    更改集作者    |     为生成的更改集中的  `作者`  特性指定值。       如果此字段为空，IDE 将使用操作系统的用户名。     |
|    文件类型    |     选择生成更新日志时要使用的语言：        * XML    * YAML    * JSON    * SQL    |
|    向不支持隐式更改集的更改集添加空回滚    |     自动为更改类型不支持 [自动回滚](https://docs.liquibase.com/community/user-guide-5-0-3/what-automatic-rollbacks-does-liquibase-support)的更改集添加空的  `rollback`  标记。       要了解如何编写回滚语句，请参阅 [官方 Liquibase 文档](https://docs.liquibase.com/community/user-guide-5-0-3/create-custom-rollback-statements-in-liquibase)。     |

### 更新日志模板

每当创建空的或增量的 Liquibase 更改日志 时，IntelliJ IDEA 会根据模板生成文件名。 您可以配置主/副目录和变更日志的名称。

以下变量和宏可用于精确配置：

* `#increment(<start>, <step>, <decimalFormat>)` ：使用数字序列生成版本。 * `start` ：首个迁移的版本号 * `step` ：每个版本号的递增值 * `decimalFormat` ：用于格式设置版本号的 [DecimalFormat](https://docs.oracle.com/en/java/javase/26/docs/api/java.base/java/text/DecimalFormat.html) 模式

* `#date(<simpleDateFormat>)` ：使用当前系统日期生成版本。 * `simpleDateFormat` ：用于格式设置日期的 [SimpleDateFormat](https://docs.oracle.com/en/java/javase/26/docs/api/java.base/java/text/SimpleDateFormat.html) 模式

* `${semVer.<getterMethod>}` ：使用项目构建文件中的 [语义版本](https://en.wikipedia.org/wiki/Software_versioning#Semantic_versioning)生成版本。 * `getterMethod` ：提取语义版本特定段的方法。 以下是 `1.2.3-SNAPSHOT+build4` 版本的示例： * `${semVer.getRawVersion()}` ：1.2.3-快照+build4 * `${semVer.getMajor()}` ：1 * `${semVer.getMinor()}` ：2 * `${semVer.getPatch()}` ：3 * `${semVer.getPreRelease()}` ：快照

### 数据库类型

有时软件必须支持几种 DBMS 类型。 在这种情况下，Liquibase 是最佳选择，因为它提供了一个跨数据库的解决方案来声明 DDL 修改。 IntelliJ IDEA 也支持此解决方案。 在生成跨数据库变更日志时，它使用 Liquibase 属性来为每个 DBMS 指定正确的数据类型：

```XML
<property name="string.type" value="varchar" dbms="postgresql"/>
<property name="string.type" value="nvarchar" dbms="mssql"/>
<changeSet id="1622118750064-2" author="jpa-buddy">
<createTable tableName="owners">
<column autoIncrement="true" name="id" type="INT">
<constraints nullable="false" primaryKey="true" primaryKeyName="PK_OWNERS"/>
</column>
<column name="first_name" type="${string.type}(255)"/>
<column name="last_name" type="${string.type}(255)"/>
<column name="address" type="${string.type}(255)"/>
<column name="city" type="${string.type}(255)"/>
</createTable>
</changeSet>

```

因此，无需为不同的 DBMS 创建单独的变更日志。

### 更改集模板

更改集模板   设置允许为每种 [变更类型](https://docs.liquibase.com/community/reference-guide-5-0-3/change-types/what-is-a-change-type)预定义常用更改集特性。 每次 [生成更新日志](#generate-migration-script)时，IntelliJ IDEA 会自动将它们插入相应的更改集。

|  条目  |  描述  |
| --- | --- |
|  [failOnError](https://docs.liquibase.com/community/reference-guide-5-0-3/changelog-attributes/failonerror)  |     选择当 Liquibase 在执行更改集时遇到错误时的处理方式：        * 如果选择此选项，Liquibase 会停止更新过程。    * 如果取消此选项，Liquibase 会抑制错误并执行后续更改集。    |
|  [runOnChange](https://docs.liquibase.com/community/reference-guide-5-0-3/changelog-attributes/runonchange)  |     选择当 Liquibase 检测到已执行的更改集被修改时的处理方式：        * 如果选择此选项，Liquibase 会重新执行该更改集。    * 如果取消此选项，Liquibase 会抛出异常并停止更新过程。    |
|    创建前提条件    |     自动为更改集添加相关 [前置条件](https://docs.liquibase.com/community/user-guide-5-0-3/what-are-preconditions)，并选择不满足时的处理方式：        * 停止运行 ：停止更新过程。    * 继续 ：跳过该更改集并执行后续更改集。 下次更新时再次尝试执行被跳过的更改集。    * 标记为已运行 ：跳过该更改集，标记为已执行，并执行后续更改集。    * 警告 ：日志警告，并照常执行该更改集。    |

## JPA Buddy 功能

您可以安装   JPA Buddy  插件，以获得对 Liquibase 的更多支持：

* [JPA 设计器](#jpa-designer)

* [编辑器工具栏](#editor-toolbar)

### JPA 设计器

JPA 设计器   工具窗口允许您生成和修改代码。

> **Note:**
> JPA Designer 也可以在   JPA Buddy   工具窗口中显示，具体取决于 [可视化设计器设置](jpa-buddy-entity-designer.html#designer-settings)。

在工具窗口（JPA Palette）的上部，选择一个操作，例如，   创建  ，然后双击一个元素，例如，   表  。

工具窗口的下半部分（JPA Inspector）会根据所选的变更日志元素进行调整，例如 changeSet，并允许您修改其属性。

要了解有关 JPA Designer 的更多信息，请参阅 [实体设计器](jpa-buddy-entity-designer.html)。

![JPA 设计器](https://resources.jetbrains.com/help/img/idea/2026.3/liquibase_jpa_designer.png)

### 编辑器工具栏

编辑器工具栏提供对相关操作的快速访问。 其中包括：

1.  在 JPA 结构中选择已打开文件的操作

2.  JPA Palette 中的所有操作

3.  初始化架构更改日志操作

4.  差异更改日志操作

![jpa-palette-db-actions](https://resources.jetbrains.com/help/img/idea/2026.3/liquibase_editor-toolbar.png)

JPA Buddy 理解您的数据模型，并尽可能预填更改集。 借助 JPA Inspector，您可以查看每个 更改日志 元素的属性：

![liquibase-changelog-preview](https://resources.jetbrains.com/help/img/idea/2026.3/liquibase-changelog-preview.jpeg)

[Video](https://www.youtube.com/v/zZhOW5hvlK8)

## 故障排除

Spring 项目:

无法从配置文件运行迁移进程
: 确保：
:
:
:
: * 已在项目的构建文件中 [添加 Liquibase 依赖](#add-to-existing-project)。
:
: * 已 [连接到对应数据库](connecting-to-a-database.html)，且连接在 数据库 工具窗口中处于活动状态。
:
: * 配置文件（ `application.properties` 或 `application.yml` ）满足如下条件： * `spring.liquibase.change-log` 指向您的根更改日志文件。 * `spring.liquibase.url` 或 `spring.datasource.url` 与用于连接数据库的 URL 匹配。

未显示状态图标的更改日志或更改集
: 确保：
:
:
:
: * 已在项目的构建文件中 [添加 Liquibase 依赖](#add-to-existing-project)。
:
: * 已 [连接到对应数据库](connecting-to-a-database.html)，且连接在 数据库 工具窗口中处于活动状态。
:
: * 配置文件（ `application.properties` 或 `application.yml` ）满足如下条件： * `spring.liquibase.change-log` 指向您的根更改日志文件。 * `spring.liquibase.url` 或 `spring.datasource.url` 与用于连接数据库的 URL 匹配。 * `spring.liquibase.default-schema` 与已更新的数据库架构匹配。
:
: * 已 [运行 Liquibase 更新](#deploy-changes)，其结果已记录在 [数据库变更日志表](https://docs.liquibase.com/secure/user-guide-5-2/what-is-the-databasechangelog-table)中。

非 Spring 项目:

无法从配置文件运行迁移进程
: 确保：
:
:
:
: * 已在项目的构建文件中 [添加 Liquibase 依赖](#add-to-existing-project)。
:
: * 已 [连接到对应数据库](connecting-to-a-database.html)，且连接在 数据库 工具窗口中处于活动状态。
:
: * 配置文件（ `liquibase.properties` ）符合以下条件： * `changeLogFile` 指向您的根更改日志文件。 * `url` 与用于连接数据库的 URL 匹配。

迁移不显示状态图标
: 确保：
:
:
:
: * 已在项目的构建文件中 [添加 Liquibase 依赖](#add-to-existing-project)。
:
: * 已 [连接到对应数据库](connecting-to-a-database.html)，且连接在 数据库 工具窗口中处于活动状态。
:
: * 配置文件（ `liquibase.properties` ）符合以下条件： * `changeLogFile` 指向您的根更改日志文件。 * `url` 与用于连接数据库的 URL 匹配。 * `defaultSchemaName` 与已更新的数据库架构匹配。
:
: * 已 [运行 Liquibase 更新](#deploy-changes)，其结果已记录在 [数据库变更日志表](https://docs.liquibase.com/secure/user-guide-5-2/what-is-the-databasechangelog-table)中。

