我们正在尝试将迁移作为.sql文件置于版本控制之下。开发人员将编写一个vn__*.sql文件,提交到版本控制,并且每5分钟运行一次的作业将自动迁移到开发和测试数据库。一旦更改被证明没有引起问题,其他人就会运行一个手动作业来在生产上运行迁移。
我的问题:
我有一个演示迁移,创建了几个表。我将v4__demotable.sql检查到PC上的版本控制中。
阅读文档时,开发人员似乎建议我应该创建一个新的v4_1_demotables.sql文件,并使用该修复程序。但是这会与V4__文件中的命令发生冲突,所以这似乎是错误的。
这是文件暗示我需要做的:
>
根据SCHEMA_VERSION表,将V4__保留为“成功”迁移。
如果迁移成功完成,但某些db对象还不是很正确(列名,...中有错误),那么按照您所说的执行,并推送一个后续脚本来修复它(重命名列,...)。
如果迁移失败,并且没有在带有DDL事务的数据库上运行,则必须手动清理该数据库。这意味着:
我有一个现有的数据库。我创建了两个迁移 我在中设置了以下内容 Spring Boot1.5.6,飞道芯3.2.1 Spring文档-FlyWay文档
Flyway在其留档中说明了可重复迁移的一些用法: 用法:(重新)创建视图/过程/函数/包/... 我想在可重复迁移中创建一些触发器/函数,这些稍后会在版本迁移中引用,并应用到表中。 Flyway最后运行可重复的迁移,这意味着触发器在被引用时不存在。 是否可以在版本化迁移之前运行某些可重复的迁移? 是否不支持此用例,因为自动更新应用于表的触发器是不好的做法?
所以我有几个可重复的迁移。 创建一个视图(删除它 现在假设我修改了第一次迁移,结果视图不再包含第二次迁移使用的列。Flyway将愉快地重新运行第一次迁移,第一个视图将被重新创建,第二个视图将由于级联选项而被删除。 在此之后,我希望第二次(依赖的)迁移也会运行,并且会抛出一个错误(因为它使用了一个不再存在的列)。 这样可能吗? 以某种方式强制flyway检查现有迁移的结果是否不再存在?或者可能存在类
我们中的两个人在不同的GIT分支中制作了一个迁移脚本。现在,我已经拉动了源开发分支,并更正了 GIT 合并问题,并将我的迁移脚本重命名为最后一个。因此,数据库的新初始化和从开发分支的版本迁移数据库将是可以的。 然而,我的本地测试数据库中有很多数据,所以我手动应用了我在GIT中引入的新迁移脚本。然而,我不能让flyway认为,一切都很好。 那么,我如何才能伪造迁移? 当我尝试迁移时,我收到以下错误:
我正在使用Flyway更新DB模式。当前,模式的最新版本是3(最新的迁移文件名为)。 我是否正确理解了参数,还是遗漏了什么? 注意:我知道自Spring Boot2以来,参数名称空间已经更改为,但我使用的是Spring Boot1,所以这不是问题。
我刚刚在配置和充分理解flyway的过程中遇到了这样的情况: 我已成功配置新项目以使用Flyway。 我已成功将测试数据库从版本0迁移到1.0.3。 无法执行到版本1.0.4的迁移。(我试图添加已经存在的列,到目前为止没有问题,是我的错。) 但是,一旦我对相应的脚本进行了必要的更改以使其工作,flyway就会不断显示这样的消息: 由于我不想恢复一个完整的转储并再次应用每一次迁移,只是为了使alte