gpt4 book ai didi

spring-boot - 如何更改 Spring Boot 和 Liquibase 的 databasechangelog.filename?

转载 作者:行者123 更新时间:2023-12-04 18:56:35 24 4
gpt4 key购买 nike

我正在使用 Spring Boot 2.0.1 和 liquibase-core-3.5.5 .

当我从 IntelliJ 运行应用程序(它将运行 main() 方法)时,我在 Liquibase 数据库列 database.filename 中看到以下类型的值:

db/changelog/changes/v0001.sql

如果我创建一个带有嵌入式 Tomcat 的胖 jar 并运行该应用程序,则相同的变更集将出现在数据库中,如下所示:
BOOT-INF/classes/db/changelog/changes/v0001.sql

我希望这些值匹配,以便我可以将我的应用程序作为 JAR 文件运行,但如果需要调试,则从 IntelliJ 连接到远程数据库。 (注意:这将用于测试数据库,我不会以这种方式调试生产)。

我找到了对 logicalFilePath 的引用(例如 this SO question ),但我不相信这会提供我所需要的。

我还尝试调试 Liquibase 代码以确定是否有办法更改此值。我最接近的是这两个观察结果:
  • SQL 文件的绝对文件路径修剪为其最终值 here.
  • 保留的完整更改集可用 here .如果我更改这些值之一(在调试时),我可以看到它进入了数据库。

  • 如果有办法使这些一致,或者可能只是更改 filename列到实际文件名(例如 v0001.sql ),这是最好的。

    更新

    我在 Spring Boot 中将 Liquibase 设置如下:

    我的 resources/db/changelog/db.changelog-master.yaml文件有以下内容:
    databaseChangeLog:
    - includeAll:
    path: db/changelog/changes/

    然后在 resources/db/changelog/changes我有个人 *.sql包含我要运行的 SQL 的文件。我不记得我在哪里找到了这个设置,但我没有任何特定于“变更集”的东西,这是我的错误吗?

    最佳答案

    我可以不再使用 includeAll 来使用它我的 db.changelog-master.yaml 中的选项文件。 includeAll option 是一种快速入门(并处理特定目录中的所有文件)的有用方法,但它似乎不适合经常使用。如前所述 here .

    这是我之前在 db.changelog-master.yaml 中所拥有的, 不要这样使用 .

    databaseChangeLog:
    - includeAll:
    path: db/changelog/changes/

    这是我将其更新为:
    databaseChangeLog:
    - include:
    file: db/changelog/changes/v0001_users.sql
    - include:
    file: db/changelog/changes/v0002_accounts.sql

    需要注意的重要一点是,我特别列出了我想要包含的每个文件,按照我希望它运行的顺序。这有点麻烦,但值得改变。

    在原始版本中, databasechangelog.filename根据应用程序的执行方式,列会有所不同:
  • db/changelog/changes/v0001_users.sql是从 IntelliJ 运行时列的显示方式
  • BOOT-INF/classes/db/changelog/changes/v0001_users.sql是从可执行 jar 运行时列的显示方式。

  • 修改后,上面两个选项都是一样的,不再包含 BOOT-INF/classes/作为前缀。

    感谢其他帮助我指明正确方向的答案!

    关于spring-boot - 如何更改 Spring Boot 和 Liquibase 的 databasechangelog.filename?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51331751/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com