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

用liquibase/flyway自动更新数据库,可能吗?

艾骏
2023-03-14

我们仍处于项目的早期阶段,我们正在构建一个包含多个表的数据库。列出的两个工具都允许我们创建一些DDL / DML文件并跟踪对数据库的更改。无论如何,当结构仍未合并时,这可能会很麻烦。

假设我想添加一个新列,甚至删除一个表:在这两个程序中,我都必须使用ALTER TABLE/etc.命令创建一个新脚本并记录更改。

在terraform中,您只需编写所需的基础设施,当您通过删除节点来更改文件时,该工具只会更新已经存在的内容。

是否可以只列出文件中的表,例如,当我删除一个表定义时,工具只更新现有的模式?同样,如果有人使用其他工具更改了模式。

共有1个答案

宋成天
2023-03-14

只要您不介意丢失数据(从您的问题中听起来这可能是可以的),Flyway就有cleOnValidationError标志。

通过这种方式,您可以使用一个(或多个)SQL文件,一旦您运行迁移并且以前运行的文件已更改,Flyway将报告验证错误,这反过来又会擦除架构,然后Flyway会根据最新定义立即重新设置。

它们对于开发中的快速迭代非常有用。

 类似资料:
  • 问题内容: 首先,有一点背景。我有一套Java应用程序,有些基于JPA,有些则没有。为了创建数据库,我目前正在使用Hibernates模式导出来为使用JPA的用户生成创建脚本。那些不使用JPA的人会手工生成脚本。然后使用ANT在应用程序安装过程中运行它们。对于更新,应用程序安装程序只需将更新脚本应用于数据库。 为了改善数据库更新的管理,我一直在研究Flyway和Liquibase。两者似乎几乎都可

  • 首先,一点背景。我有一组Java应用程序,有些基于JPA,有些不是。要创建我的数据库,我目前正在使用Hibernates模式导出为那些使用JPA的人生成创建脚本。那些不使用JPA的人我手动生成脚本。然后在应用程序安装期间使用ANT运行这些脚本。对于更新,应用程序安装程序只需将更新脚本应用于数据库。 为了改进数据库更新的管理,我一直在研究Flyway和Liquibase。这两个脚本似乎几乎都能满足我

  • 我的应用程序有以下场景: 1个生产服务器 1个测试服务器 n开发计算机 对于数据库迁移,我们使用Hibernate Schema Update For the Schema和DBUnit来填充所有生产数据(在所有服务器/计算机上)。当模式更新完成后,我为新模式生成一个新的DTD文件,这样我就可以重新导入DBUnitXML。应用程序在启动时使用XML文件更新数据库(仅在开发和测试服务器/计算机上!)

  • 我想为现有的应用程序使用flyway。 应该有两种不同的情况: 1)应用程序安装:DDL和数据库初始化 2) 应用程序更新:迁移数据库 问题是如果我安装版本6.0,我有例如: 如果我将init version设置为V1.0.0,它将执行直到V6_0_0的所有更新,但是在数据库初始化之后,它将跳过所有更新。 要安装一个旧的shema,这样我就可以使用所有udpate脚本,即使对于全新安装也会非常困难

  • 我对Liquibase和Flyway都是新手。想做一些你好的世界。我成功地使用Liquibase和Flyway运行了基本的SQL(创建、插入等)。有兴趣从命令行运行它们。 飞道: 开头比较容易 我必须将正确命名格式为“v1_xxxx.sql”的sql文件放在正确的文件夹“flyway/sql”中,并运行“flyway migrate” 最棒的是,它自动获取任何给定正确文件名的新sql文件。 液体碱

  • 我有一个Gradle脚本,它使用flyway插件来创建一些数据库表,现在我需要更新该脚本,以便它可以与两组单独的flyway脚本一起工作,每个脚本更新一个单独的数据库。 在单数据库版本的脚本中,我只是这样做: 我一直在尝试声明一个新任务来运行第二个数据库的脚本: 我的Gradle技能很差,但我知道这不是正确的方法——我的理解是块会覆盖原始flyway配置,所以如果我想在之后运行,它会继续使用第二组