Liquibase 使用姿势求教

2022-12-14 11:13:00 +08:00
 amet

想通过 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 。

648 次点击
所在节点    问与答
1 条回复
amet
2022-12-14 18:19:25 +08:00
还是没搜到什么好办法,写了个脚本在使用 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
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/902411

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX