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