Flyway 甲骨文部署

Flyway Oracle Deployment

我刚开始从事一个新项目。我们正在从头开始构建一个新的应用程序。团队从一个全新的模式开始。我想自动化数据库构建过程,所以我开始寻找选项。 Flyway 似乎是个不错的选择。我一直在玩,发现了该工具的一些局限性。也许,有人能帮上忙。

SQL 个文件的目录结构如下: SQL -- DDL -- 动态语言 -- 包裹

我们做的是敏捷开发,所以文件名是根据冲刺号来命名的。我们使用的文件命名约定是: Sprint#_script#_userstory#_description

例如: S1_01_US123_CreateNewTable.sql S1_02_US123_AddConstraint.sql

下一个冲刺: S2_01_US456_AddColumn.sql

等等...

我设置了 JDBC 参数,我可以连接。我用几个测试脚本测试了一些基本的东西,比如:清理、修复、信息和迁移,效果非常好。当我尝试部署所有脚本时,我开始 运行 遇到问题。问题如: - 它不喜欢单下划线。 - 它不喜欢以 S1_01_* 开头的文件名,其余文件名不同,它们位于不同的文件夹中。

我有以下问题:

我主要关心的是 运行宁 DDL 优先于其他一切。如果我能做到这一点,那么我就可以开始使用 Flyway 并边学边做。

提前致谢。

先驱

Can I build using Flyway without having to rename the files?

也许吧。使用 flyway.sqlMigrationSeparator 属性 进行实验。尝试“_US”,它会在脚本编号后中断。您还需要设置 flyway.sqlMigrationPrefix=S.

How can I get it to deploy in this order: DDLs, DMLs, Packages (everytime I deploy). And we have a separate header and body files, so deploy header first as well.

指定多个位置(以逗号分隔)并确保版本编号顺序合理,就好像这些文件都在同一目录中一样。如果从命令行 运行,使用 -X 打开调试以查看 flyway 如何收集迁移。

此外,如果可能,您应该考虑将您的包重命名为可重复迁移(默认值:R),这样您只需要更改文件的内容即可让 flyway 获取它。

Can I change the structure of schema_version table?

没有。这是由 flyway 管理的。

Can I do selective clean? Like flag some of the objects to not to be dropped?

没有。在这种情况下,最好设置 flyway.cleanDisabled=true 以防止意外错误。如果你想做额外的清理,在清理之前和之后都有回调,但我不认为你可以在不深入研究代码的情况下限制清理本身。

祝你好运!