我正在使用flyway命令行工具进行数据库迁移。如果我将SQL迁移放在 SQL 目录中,它可以正常工作。但是,如果我将Locations属性设置为文件系统上的路径,则会在没有任何警告或错误的情况下失败。
例如:flyway.locations=/file-path/
如何指定文件系统路径?我不想将我的迁移放在 SQL 目录中。
答案 0 :(得分:0)
目前尚不支持:https://github.com/flyway/flyway/issues/108
作为一种解决方法,您可以将symlink / sql链接到要使用的目录。
答案 1 :(得分:0)
您应该使用字符串“filesystem:”将绝对路径作为“migration”目录的前缀,如下所示:
String path = "/my/project/sql/migrate/";
migrateRelease("filesystem:" + path);
flyway.setLocations(location);
flyway.migrate();
答案 2 :(得分:0)
感谢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.