【问题标题】:Flyway Command line unable to find migrations on filesystemFlyway 命令行无法在文件系统上找到迁移
【发布时间】:2012-11-17 14:14:55
【问题描述】:

我正在使用 flyway 命令行工具进行数据库迁移。如果我将 SQL 迁移放在 SQL 目录中,它可以正常工作。但是,如果我将 Locations 属性设置为文件系统上的路径,它会在没有任何警告或错误的情况下失败。

例如:flyway.locations=/file-path/

如何指定文件系统路径?我不想将我的迁移放在 SQL 目录中。

【问题讨论】:

    标签: flyway


    【解决方案1】:

    目前尚不支持此功能:https://github.com/flyway/flyway/issues/108

    作为一种解决方法,您可以将 /sql 符号链接到您要使用的目录。

    【讨论】:

    • 感谢您的快速回复。 flyway ant 插件是否支持具有不同位置的多个模式进行迁移?我知道 flyway 一般可以,但是 ant 插件似乎没有这样做。
    • 使用一个 flyway:migrate 调用每个。另见:flywaydb.org/documentation/faq.html#multiple-schemas
    • 我尝试这样做,但第二个 flyway:migrate 调用似乎使用了先前迁移模式的 schema_version 表。如何让他们使用单独的 schema_version 表?
    • 架构或表属性必须不同。
    • 架构不同。例如:考虑架构 S1 和 S2 的情况,首先我迁移 S1 并且 S1.schema_version 表已更新,但之后当我尝试迁移 S2 时,它会检查 S1.schema_version 而不是 S2.schema_version。
    【解决方案2】:

    你应该在'migration'目录的绝对路径前加上字符串“filesystem:”,像这样:

    String path = "/my/project/sql/migrate/";
    migrateRelease("filesystem:" + path);
    flyway.setLocations(location);
    flyway.migrate();
    

    【讨论】:

      【解决方案3】:

      感谢 Axel,它正在使用 3.2.1 版本。唯一需要注意的是迁移文件上的版本号应该比 schema_version 表上的版本号多。否则,运行 migrate 命令后可能会得到以下结果;

      Flyway 3.2.1 by Boxfuse
      
      Database: jdbc:mysql://...
      Validated 1 migration (execution time 00:00.009s)
      Current version of schema `ref_db`: 1
      Schema `ref_db` is up to date. No migration necessary.
      

      【讨论】:

        猜你喜欢
        • 2013-08-14
        • 2016-09-24
        • 2012-06-28
        • 2012-02-07
        • 1970-01-01
        • 2013-03-08
        • 2014-08-11
        • 2019-05-02
        • 1970-01-01
        相关资源
        最近更新 更多