首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Liquibase数据库空数据库和已有数据库迁移

Liquibase数据库空数据库和已有数据库迁移
EN

Stack Overflow用户
提问于 2012-03-07 21:12:00
回答 2查看 3.3K关注 0票数 2

我正在开发一个使用Spring、JPA/Hibernate和MS SQL Server/PostgreSQL的Java web应用程序。为了使已安装系统的数据库迁移更容易,我希望集成Liquibase,以便在应用程序启动时自动进行更新。目前,我总是在创建更新脚本,我必须以正确的顺序手动执行这些脚本。

我测试了与Spring的集成,并很快使其正常工作。Liquibase的元表是用第一个变更集创建的,它执行这些更改。问题是已经安装了一些系统,但将来可能还会安装其他系统。

使用Liquibase是否可以检测数据库是否为空,并在新安装的系统中自动执行DDL?否则,我将不得不手动执行DDL,然后启动应用程序。

我想要的是当数据库为空时自动初始化,或者如果数据库已经存在则进行更新。有没有可能用Liquibase做到这一点,或者有什么技巧可以让它工作吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-10 05:09:17

当您开始在具有现有模式的现有系统上使用liquibase时,基本上有两种选择:

  1. 假设所有数据库都将从已知的起始点启动。在
  2. 外部执行您需要的任何操作(从快照恢复、手动构建等)。使用liquibase命令为现有数据库创建一个changeSet。你只想在新的数据库上运行它,所以你可以通过一个定制的liquibase集成调用来控制它,或者在开始时用一个<preConditions onFail="MARK_RAN"><not><tableExists tableName="table name here"/></not></preConditions>块将生成的changeLog折叠成一个changeSet。
票数 3
EN

Stack Overflow用户

发布于 2012-03-07 21:21:52

使用Liquibase是否可以检测数据库是否为空,并在新安装的系统中自动执行DDL?

嗯,就像你提到的,

使用第一个变更集创建Liquibase的元表,并执行这些更改。

因此,如果您的DDL语句位于变更集(可能是第一个变更集)中,那么一切都应该没问题。

有没有可能用Liquibase做到这一点,或者有什么技巧可以让它工作吗?

是的,这应该是可能的,没有任何技巧。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9602167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档