我正在开发一个使用Spring、JPA/Hibernate和MS SQL Server/PostgreSQL的Java web应用程序。为了使已安装系统的数据库迁移更容易,我希望集成Liquibase,以便在应用程序启动时自动进行更新。目前,我总是在创建更新脚本,我必须以正确的顺序手动执行这些脚本。
我测试了与Spring的集成,并很快使其正常工作。Liquibase的元表是用第一个变更集创建的,它执行这些更改。问题是已经安装了一些系统,但将来可能还会安装其他系统。
使用Liquibase是否可以检测数据库是否为空,并在新安装的系统中自动执行DDL?否则,我将不得不手动执行DDL,然后启动应用程序。
我想要的是当数据库为空时自动初始化,或者如果数据库已经存在则进行更新。有没有可能用Liquibase做到这一点,或者有什么技巧可以让它工作吗?
发布于 2012-03-10 05:09:17
当您开始在具有现有模式的现有系统上使用liquibase时,基本上有两种选择:
<preConditions onFail="MARK_RAN"><not><tableExists tableName="table name here"/></not></preConditions>块将生成的changeLog折叠成一个changeSet。发布于 2012-03-07 21:21:52
使用Liquibase是否可以检测数据库是否为空,并在新安装的系统中自动执行DDL?
嗯,就像你提到的,
使用第一个变更集创建Liquibase的元表,并执行这些更改。
因此,如果您的DDL语句位于变更集(可能是第一个变更集)中,那么一切都应该没问题。
有没有可能用Liquibase做到这一点,或者有什么技巧可以让它工作吗?
是的,这应该是可能的,没有任何技巧。
https://stackoverflow.com/questions/9602167
复制相似问题