gpt4 book ai didi

Flyway 用法 : what exactly is the migration concept?

转载 作者:行者123 更新时间:2023-12-01 23:15:32 25 4
gpt4 key购买 nike

我查看了 Flyway 示例和文档,并试图了解它在我的环境中是否有用。
我不清楚以下概念细节:Flyway 如何管理数据库版本之间的更改?它显然不比较数据库生命实例(请参阅此处的答案:Can Flyway find out and generate migration files from datamodel?)

详细地说,我的设置如下所示:
我在编码时创建 SQL 创建和插入脚本(自动和手动)。这意味着我的数据库的每个版本都由许多插入/创建语句表示。
在我的世界中,我通过数据库工具(来自 Oracle 的 sqlplus)执行这些脚本。每次运行都会设置数据库 _from_scratch_ (!)。

我可以将这些完全相同的脚本 1 对 1 放在 Flyway 的“迁移”路径中吗?如果目标数据库比我所做的最后一个“迁移步骤”旧得多(或者安装时 Flyway 还不存在),会发生什么?

更新:

我从另一个 Flyway 用户那里得到了一些输入:

似乎每个“迁移”(数据库版本)都必须是手写的 SQL/Java 代码,并且只包含来自先前“迁移”数据库的“更新”。

如果这是真的,我想知道如何将其与传统编码技术一起使用:在我的世界中,SQL 语句是自动生成的,并且包含所有数据库 init/create 语句,而不仅仅是对某些先前版本的“更新”。如果我的 SQL 代码生成器可以做到这一点,那么我什至不需要像 Flyway 这样的工具 :-)。

最佳答案

您关于“如何处理历史比迁移脚本更长的数据库”的问题?您需要创建一个 V1_migration/sql 脚本来匹配/重新创建您最新的数据库架构。可以将空白数据库带到您今天拥有的东西。使用现有的数据库工具创建/生成该 sql 脚本,然后将其放入 flyways 迁移目录中。 (并通过对干净的数据库使用 flyway 来测试 V1,看看是否得到了预期的结果。)http://flywaydb.org/documentation/existing.html

在该时间点之后,必须在您工作时添加所有更高版本。当您决定需要一个新表时,在您的开发环境中,编写一个新的 V*_.sql 来将您的架构修改为您需要的方式。

本博客针对 Spring/SQL 应用程序讨论了这种情况。 https://blog.synyx.de/2012/10/database-migration-using-flyway-and-spring-and-existing-data/

关于Flyway 用法 : what exactly is the migration concept?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29391165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com