database-migration - 使用空数据库和预先存在的数据库进行 Liquibase 数据库迁移

标签 database-migration liquibase

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

我测试了与 Spring 的集成,并且很快就可以运行。 Liquibase 的元表是使用第一个变更集创建的,并执行更改。问题是已经存在一些已安装的系统,但将来可能还会有其他安装。

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

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

最佳答案

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

  1. 假设所有数据库都将从已知的起点开始。在 liquibase 之外做任何你需要做的事情来让它们达到这一点(从快照恢复、手动构建等)

  2. 使用 liquibasegenerateChangeLog 命令为现有数据库创建变更集。您只想在新数据库上运行它,因此您可以通过自定义 liquibase spring 集成调用来控制它,或者使用 <preConditions onFail="MARK_RAN"><not><tableExists tableName="table name here"/></not></preConditions> 将生成的变更日志折叠为一个变更集。在开始处阻塞。

关于database-migration - 使用空数据库和预先存在的数据库进行 Liquibase 数据库迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9602167/

相关文章:

php - 从 MySQL 5.1 迁移到 MySQL 5.5 时 PHP 函数会产生任何问题吗?

找不到 Gradle Liquibase 更改日志文件

java - 使用 Liquibase 删除 MySQL 表

java - 更改 Naturald 参数名称后出错

sql-server - 迁移 SQL Server 中的海量数据库

java - 是否存在使用 Hibernate 指定模式的 DB 模式迁移工具?

ruby - Rails 4 用索引重命名列

java - 有没有办法使用 Spring Boot、Liquibase 和 sql-script 进行集成测试?

java - 创建 liquibase 变更集验证规则

Django South 和约束 ID