amet
V2EX  ›  问与答

Liquibase 使用姿势求教

  •  
  •   amet · Dec 14, 2022 · 1233 views
    This topic created in 1248 days ago, the information mentioned may be changed or developed.

    想通过 Liquibase 维护各个开发机 local 环境数据库结构的一致性,分别尝试了 maven plugin 和添加到 dependency 的方法。

    不同工具 update 之后的 DATABASECHANGELOG.FILENAME 是不同的,比如用 mvn liquibase:update 得到 src/main/resources/db/changelog/changelog.sql

    启动 Spring Boot 程序的时候 Liquibase 读到的 changelog 文件路径是 classpath:db/changelog/changelog.sql,这两个路径差异会导致 liquibase.changelog.filter.ShouldRunChangeSetFilter#changeSetsMatch 方法返回 False ,让 Liquibase 认为这个 changeset 没有应用过,试图执行 SQL 语句创建表然后失败。

    想问下一般生产实践都是怎么做的?禁止不同方法混用?

    maven plugin 和 dependency 的版本都是 4.17.2 。

    amet
        1
    amet  
    OP
       Dec 14, 2022
    还是没搜到什么好办法,写了个脚本在使用 CLI 的时候切一下工作目录,好歹是把相对路径对齐了

    ```zsh
    #!/bin/zsh
    # This script is used to run liquibase migrations on the local machine.
    WORK_DIR=src/main/resources

    cd $WORK_DIR
    liquibase --hub-mode=off \
    --driver=com.mysql.cj.jdbc.Driver \
    --classpath=$HOME/.m2/repository/com/mysql/mysql-connector-j/8.0.31/mysql-connector-j-8.0.31.jar \
    --changeLogFile=db/changelog/changelog.mysql.sql \
    --url=jdbc:mysql://localhost:3306/showcase \
    --username=******** \
    --password=********** \
    $1
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5613 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 07:50 · PVG 15:50 · LAX 00:50 · JFK 03:50
    ♥ Do have faith in what you're doing.