Flyway 用法:迁移概念到底是什么?
Flyway usage: what exactly is the migration concept?
我查看了 Flyway 示例和文档,并试图了解它在我的环境中是否有用。
我不清楚以下概念细节:Flyway 如何管理数据库版本之间的更改?它显然不比较数据库生命实例(参见此处的答案:Can Flyway find out and generate migration files from datamodel?)
详细来说,我的设置如下所示:
我在编码时创建 SQL 创建和插入脚本(自动和手动)。这意味着我的数据库的每个版本都由许多 insert/create 语句表示。
在我的世界中,我通过数据库工具(来自 Oracle 的 sqlplus)执行这些脚本。每个 运行 都会设置数据库 _from_scratch_ (!).
我可以将这些完全相同的脚本 1 对 1 放入 Flyway 的 "migration" 路径中吗?如果目标数据库比我最后一个 "migration step" 旧得多(或者 flyway 在安装时还不存在)会怎样?
更新:
我从另一个 Flyway 用户那里得到了一些意见:
好像每个"migration"(数据库的版本)都是手写的SQL/Java代码,而且只包含"updates"来自之前的"migration"数据库.
如果这是真的,我想知道如何将其与传统编码技术一起使用:在我的世界中 SQL 语句是自动生成的并且包含 all 数据库 init/create 语句,而不仅仅是某些先前版本的 "updates"。如果我的 SQL 代码生成器可以做到这一点,那么我什至不需要像 Flyway 这样的工具 :-)。
你关于 "how to handle a DB that has a longer history than there are migration scripts?" 的问题你需要创建一个 V1_ migration/sql 脚本,matches/recreates 你最新的数据库模式。可以将空白数据库变成您今天拥有的东西。 Create/generate那个sql脚本使用你现有的DB工具,然后把它放在flyways迁移目录中。 (并通过使用 flyway 对干净的数据库测试 V1,看看你是否得到了你期望的结果。)http://flywaydb.org/documentation/existing.html
在该时间点之后,您必须在工作时添加所有更高版本。当您决定需要一个新的 table 时,请在您的开发环境中编写一个新的 V*_.sql 以将您的架构修改为您需要的方式。
此博客针对 Spring/SQL 应用程序讨论了这种情况。 https://blog.synyx.de/2012/10/database-migration-using-flyway-and-spring-and-existing-data/
我查看了 Flyway 示例和文档,并试图了解它在我的环境中是否有用。 我不清楚以下概念细节:Flyway 如何管理数据库版本之间的更改?它显然不比较数据库生命实例(参见此处的答案:Can Flyway find out and generate migration files from datamodel?)
详细来说,我的设置如下所示: 我在编码时创建 SQL 创建和插入脚本(自动和手动)。这意味着我的数据库的每个版本都由许多 insert/create 语句表示。 在我的世界中,我通过数据库工具(来自 Oracle 的 sqlplus)执行这些脚本。每个 运行 都会设置数据库 _from_scratch_ (!).
我可以将这些完全相同的脚本 1 对 1 放入 Flyway 的 "migration" 路径中吗?如果目标数据库比我最后一个 "migration step" 旧得多(或者 flyway 在安装时还不存在)会怎样?
更新:
我从另一个 Flyway 用户那里得到了一些意见:
好像每个"migration"(数据库的版本)都是手写的SQL/Java代码,而且只包含"updates"来自之前的"migration"数据库.
如果这是真的,我想知道如何将其与传统编码技术一起使用:在我的世界中 SQL 语句是自动生成的并且包含 all 数据库 init/create 语句,而不仅仅是某些先前版本的 "updates"。如果我的 SQL 代码生成器可以做到这一点,那么我什至不需要像 Flyway 这样的工具 :-)。
你关于 "how to handle a DB that has a longer history than there are migration scripts?" 的问题你需要创建一个 V1_ migration/sql 脚本,matches/recreates 你最新的数据库模式。可以将空白数据库变成您今天拥有的东西。 Create/generate那个sql脚本使用你现有的DB工具,然后把它放在flyways迁移目录中。 (并通过使用 flyway 对干净的数据库测试 V1,看看你是否得到了你期望的结果。)http://flywaydb.org/documentation/existing.html
在该时间点之后,您必须在工作时添加所有更高版本。当您决定需要一个新的 table 时,请在您的开发环境中编写一个新的 V*_.sql 以将您的架构修改为您需要的方式。
此博客针对 Spring/SQL 应用程序讨论了这种情况。 https://blog.synyx.de/2012/10/database-migration-using-flyway-and-spring-and-existing-data/