Liquibase Autopick 可以像 Flyway 这样的新变更集文件吗?

Posted

技术标签:

【中文标题】Liquibase Autopick 可以像 Flyway 这样的新变更集文件吗?【英文标题】:Can Liquibase Autopick new changesets files like Flyway? 【发布时间】:2016-11-27 17:29:05 【问题描述】:

我是 Liquibase 和 Flyway 的新手。正在尝试做一些Hello Worlds。我使用 Liquibase 和 Flyway 成功运行了基本 SQL(创建插入等)。有兴趣从 命令行 运行它们。

飞行路线:

有点容易上手 我必须将 sql 文件以正确的命名格式 'V1_xxxx.sql' 放入正确的文件夹 'flyway/sql' 并运行 'flyway migrate' 最好的部分是它自动拾取任何新的 sql 文件给定正确的文件名。

LiquiBase:

不得不花一些时间去理解和使用它

每次都需要给出正确的文件名

liquibase --driver=com.mysql.jdbc.Driver --classpath=/path/to/classes --changeLogFile=com/example/db.changelog1.xml --url= "jdbc:mysql://localhost/example" --username=dev 迁移

liquibase --driver=com.mysql.jdbc.Driver --classpath=/path/to/classes --changeLogFile=com/example/db.changelog2.xml --url= "jdbc:mysql://localhost/example" --username=dev 迁移

liquibase 有没有办法自动选择新的 xml 文件?像 Flyway 一样,我可以只给出文件夹名称,而 Liquibase 可以使用其表 DATABASECHANGELOG 来查找增量并执行相同的操作。

仅针对 Liquibase 的第二个问题

在 Windows 中,为了成功运行命令,我必须更改 changeLogFile 参数 ... 从 ...

liquibase --driver=com.mysql.jdbc.Driver --classpath=/path/to/classes --changeLogFile=com/example/db.changelog1.xml      --url="jdbc:mysql://localhost/example" --username=dev migrate

liquibase --driver=com.mysql.jdbc.Driver --classpath=/path/to/classes --changeLogFile=./db.changelog1.xml      --url="jdbc:mysql://localhost/example" --username=dev migrate

即我将当前工作目录更改为 com/example,然后修改 changeLogFile 参数以指向当前文件夹中的文件并执行命令。

有没有办法可以指向另一个文件夹中的changeLogFile(当前文件夹除外)

【问题讨论】:

【参考方案1】:

为了让命令行更容易使用 liquibase,您可以做的一件事是创建一个名为 liquibase.properties 的文件,并将其保存在您运行命令的目录中。如果我没记错的话,命令行将查找具有该名称的文件并使用该文件中的属性,而不是需要命令行上的所有选项。有关详细信息,请参阅 http://www.liquibase.org/documentation/liquibase.properties.html 和 http://www.liquibase.org/documentation/command_line.html#using_a_liquibase.properties_file。那里的文档有这个:

如果您不想总是在命令行上指定选项,您可以 可以创建一个包含默认值的属性文件。默认, Liquibase 将在 当前工作目录,但您可以指定备用位置 带有 --defaultsFile 标志。如果您在 属性文件并在命令行上指定相同的选项, 命令行上的值将覆盖属性文件的值。

是的,您可以让 liquibase 自动从目录加载文件。您必须有一个从命令行或属性文件引用的简单 changelog.xml,但是该 changelog 只能引用包含更多 changelog 文件的另一个目录。 <includeAll> 标签用于此目的(请参阅http://www.liquibase.org/documentation/includeall.html)了解更多详细信息。

另外,是的,您可以将更改日志文件放在您喜欢的任何位置。

【讨论】:

以上是关于Liquibase Autopick 可以像 Flyway 这样的新变更集文件吗?的主要内容,如果未能解决你的问题,请参考以下文章

Liquibase:如何在 MySQL 数据库表上设置 Charset UTF-8?

Liquibase:如何在MySQL数据库表上设置Charset UTF-8?

是否存在 liquibase 锁定超时?

liquibase 是不是有一种方法可以在不实际执行的情况下测试回滚策略?

我可以使用 Liquibase 创建 Hibernate Envers 特定表吗

MIDI信息为什么不能通过FL Studio输出