当前位置: 首页 > 知识库问答 >
问题:

Flyway数据库初始化或更新

范翰飞
2023-03-14

我想为现有的应用程序使用flyway。

应该有两种不同的情况:

1)应用程序安装:DDL和数据库初始化

2) 应用程序更新:迁移数据库

问题是如果我安装版本6.0,我有例如:

V1_0_1__CreateShema (for 6.0.0)
V1_0_2__InitData (for 6.0.0)
....
V4_0_0__Update_DDL_and_DML
V5_0_0__Update_DDL_and_DML
V6_0_0__Update_DDL_and_DML

如果我将init version设置为V1.0.0,它将执行直到V6_0_0的所有更新,但是在数据库初始化之后,它将跳过所有更新。

要安装一个旧的shema,这样我就可以使用所有udpate脚本,即使对于全新安装也会非常困难(没有数据库版本历史记录,所以我必须做逆向工程)

我可以使用一种变通方法:

1) Check if version table exist
2) If not - migrate to version 1.0.2
3) drop the version table
4) init again with version 6.0.0

应该有更好的方法,不是吗?

共有1个答案

柯伟志
2023-03-14

我已经强调了这个问题:

V1 _ 0 _ 1 _ _创建模式(6.0.0版)< br > V1 _ 0 _ 2 _ _初始化数据(6.0.0版)

要达到 6.0,您应该运行所有脚本,最多V6_0_0__Update_DDL_and_DML

V1应该属于V1,以后也不会改变。

 类似资料:
  • 我有不使用Flyway的现有数据库postgres,我需要复制它。如何将现有数据库状态移动到新的空数据库?我没有任何迁移sql。所以我期待像Liquibase中的GenerateChangelog这样的命令,但在Flyway中似乎没有这样的命令。

  • 本文向大家介绍SpringBoot使用flyway初始化数据库,包括了SpringBoot使用flyway初始化数据库的使用技巧和注意事项,需要的朋友参考一下 概述 Flyway这款数据库版本工具就算大家没有使用过但也略有耳闻了,SpringBoot对该款工具进行集成的框架可以让我们在启动SpringBoot应用时自动去找SQL版本文件进行比对执行,但在迁移或初始化时往往还是需要先手动进行下数据库

  • 我有一个Java Spring Boot应用程序,在我的Maven pom.xml中将Flyway配置为依赖项(我有一个父pom和一个项目pom...Flyway是在我的项目pom中定义的)。 application.properties中只有几个条目: 我可以运行一个maven任务来让Flyway运行来创建/更新我的数据库,然后针对该数据库运行我的应用程序,但是我很难通过运行我的应用程序(这在p

  • 我有以下docker compose文件(): 以及下面的: 然后执行以下命令: 它会导致错误: 在日志中,我看到以下内容: 看起来flyway在数据库初始化之前启动,因此无法连接到数据库,我看到下面的错误。 我怎样才能解决这个问题? 我谷歌了类似的问题,我找到了以下建议:https://github.com/vishnubob/wait-for-it但我是docker的新手,我不明白如何将其放入

  • 我在读关于Flyway的文件时发现: 如果您有一个尚未被Flyway填充的现有数据库,则可以这样做: 而我的问题是,我可以用特定版本初始化元数据表吗? 诸如此类: 在db/migration文件夹下,我有一些从1.0到1.49的sql脚本;触针位于1.35。其目的是在1.35中初始化prod版本,而不创建初始迁移脚本(由于几个原因,我无法创建它…)并在迁移期间应用1.36到1.49之间的sql脚本

  • 初始化数据 打开MainSetup类,在Daos语句后面插入新建根用户的代码 // 初始化默认根用户 if (dao.count(User.class) == 0) { User user = new User(); user.setName("admin"); user.setPassword