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 是不是有一种方法可以在不实际执行的情况下测试回滚策略?