代码之家  ›  专栏  ›  技术社区  ›  mnd

如何更改Spring引导和Liquibase的databaseChangeLog.filename?

  •  3
  • mnd  · 技术社区  · 6 年前

    我用的是弹簧靴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代码,以确定是否有方法可以更改这个值。我最接近的是这两个观察结果:

    1. SQL文件的绝对文件路径已修剪为其最终值 here.
    2. 保留的完整更改集可用 here 。如果我改变其中一个值(在调试时),我可以看到它进入了数据库。

    如果有一种方法使这些一致,或者可能只是改变 filename 列转换为实际文件名(例如 v0001.sql )那是最好的。

    更新

    我在弹簧保护套中的Liquibase设置如下:

    我的 resources/db/changelog/db.changelog-master.yaml 文件包含以下内容:

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

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

    3 回复  |  直到 6 年前
        1
  •  1
  •   bilak    6 年前

    logicalFilePath this question

        2
  •  1
  •   Karol Dowbecki    6 年前

    logicalFilePath DATABASECHANGELOG.FILENAME as explained in this post

        3
  •  1
  •   mnd    6 年前

    includeAll db.changelog-master.yaml here

    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
    • BOOT-INF/classes/db/changelog/changes/v0001_users.sql

    BOOT-INF/classes/