当我针对(中央)数据库进行调试时,Flyway可以更新数据库架构。当我的本地应用程序在比部署的应用程序更进一步的开发分支上运行时,会发生这种情况。 然后,运行本地应用程序将调用中央数据库上的迁移脚本。在最坏的情况下,这可能会更新生产数据库。
另一种情况是2个开发人员使用测试数据对抗1个开发数据库。两个开发人员都在研究不同的功能,两者都在修改架构。当一个开发人员更新数据库时,另一个开发人员(可能)面临校验和问题,否则会对所做的更改感到惊讶。
我正在考虑解决这些问题。
当然,Flyway之外还有一些解决方案,比如只连接丢弃的数据库,或阻止访问重要的数据库。
我对Flyway提供的选项很感兴趣。
答案 0 :(得分:2)
有一些选项,在您的案例中似乎很有用。
对于第一个,您可以使用与您的数据库相同的版本设置target
属性,以防止Flyway更新它。
对于第二个案例,2个开发人员同时使用同一个数据库实例,您可以尝试关闭validateOnMigrate
属性以避免验证失败,或ignoreMissingMigrations
忽略某些开发人员的迁移还没有。
Here您可以通过控制台属性查找所有可用于迁移任务的内容。你没有指定,你究竟是在运行Flyway,如果它是通过Spring Boot完成的,那么并非所有这些属性都可用,只有其中一些 - 你可以在它下找到here Flyway部分。
但是对于大多数情况,我认为,最好的解决方案是在开发和调试过程中简单地关闭Flyway迁移,如果可能的话,可以用于提供现成功能。