将 Flyway 添加到已投入生产的项目中

Posted

技术标签:

【中文标题】将 Flyway 添加到已投入生产的项目中【英文标题】:Add Flyway to a project already in production 【发布时间】:2021-12-27 22:28:09 【问题描述】:

我正在开发一个没有 Flyway 库的 JAVA 项目,该应用程序使用 PosgreSQL 数据库。 数据库、表、索引...的创建是通过在数据库服务器上执行的 SQL 指令脚本完成的。

我现在想使用 Flyway 进行未来的数据库修改,但我不知道是否可以即时集成它?你能确认这是可能的吗?如果是这样,是否需要设置任何特定配置?

非常感谢。

【问题讨论】:

是的,有可能。 Flyway - 在其核心 - 执行.sql-files。如果我们防御性地编写初始.sql文件(捕获数据库的当前状态)(即使用CREATE TABLE IF NOT EXISTS ...),那么这应该是可能的。因此,第一次迁移应该捕获数据库的当前状态。我们要捕获数据库的整个状态,包括触发器、物化视图、函数……。如果“基础”做好了,我们只会通过新的迁移文件来修改数据库架构。 查看 FlywayDB.org 页面,Existing Database Setup 【参考方案1】:

你绝对可以。核心概念是确保您为所有未来开发建立基线起点。您可以通过以下两种方式之一执行此操作。您可以使用Baseline Migrations 的概念来设置您现有的脚本。或者,您只需忽略现有结构(有点)并确定您在哪里beginning baseline。然后,您从该点开始创建迁移。无论哪种方式都会奏效。由您决定哪种方法最适合您的情况。

【讨论】:

以上是关于将 Flyway 添加到已投入生产的项目中的主要内容,如果未能解决你的问题,请参考以下文章

使用Flyway迁移存储过程

如何将 Laravel 身份验证添加到已启动的 Laravel 项目中?

根据 Flyway,原始 SQL 脚本现在无效

生产数据库中的 Flyway 集成

我应该将 Flutter Web 用于不应该在夏季之前投入生产的网站项目吗? [关闭]

如何将 JDBC 驱动程序添加到 Flyway Gradle 插件