【发布时间】:2012-11-17 14:14:55
【问题描述】:
我正在使用 flyway 命令行工具进行数据库迁移。如果我将 SQL 迁移放在 SQL 目录中,它可以正常工作。但是,如果我将 Locations 属性设置为文件系统上的路径,它会在没有任何警告或错误的情况下失败。
例如:flyway.locations=/file-path/
如何指定文件系统路径?我不想将我的迁移放在 SQL 目录中。
【问题讨论】:
标签: flyway
我正在使用 flyway 命令行工具进行数据库迁移。如果我将 SQL 迁移放在 SQL 目录中,它可以正常工作。但是,如果我将 Locations 属性设置为文件系统上的路径,它会在没有任何警告或错误的情况下失败。
例如:flyway.locations=/file-path/
如何指定文件系统路径?我不想将我的迁移放在 SQL 目录中。
【问题讨论】:
标签: flyway
目前尚不支持此功能:https://github.com/flyway/flyway/issues/108
作为一种解决方法,您可以将 /sql 符号链接到您要使用的目录。
【讨论】:
你应该在'migration'目录的绝对路径前加上字符串“filesystem:”,像这样:
String path = "/my/project/sql/migrate/";
migrateRelease("filesystem:" + path);
flyway.setLocations(location);
flyway.migrate();
【讨论】:
感谢 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.
【讨论】: