提问者:小点点

Liquibase是否可以像Flyway一样自动选择新的变更集文件?


我对Liquibase和Flyway都是新手。想做一些你好的世界。我成功地使用Liquibase和Flyway运行了基本的SQL(创建、插入等)。有兴趣从命令行运行它们。

飞道:

  • 开头比较容易
  • 我必须将正确命名格式为“v1_xxxx.sql”的sql文件放在正确的文件夹“flyway/sql”中,并运行“flyway migrate”
  • 最棒的是,它自动获取任何给定正确文件名的新sql文件。

液体碱:

>

  • 必须花一些时间来理解和使用它
  • 每次都需要给出正确的文件名

    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将在当前工作目录中查找一个名为“Liquibase.properties”的文件,但您可以使用--defaultsFile标志指定一个备用位置。如果您已经在属性文件中指定了一个选项,并且在命令行上指定了相同的选项,则命令行上的值将覆盖属性文件值。

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

    而且,是的,您可以将changelog文件放在您喜欢的任何地方。