在现有数据库上使用 liquibase

Posted

技术标签:

【中文标题】在现有数据库上使用 liquibase【英文标题】:Using liquibase on the existing database 【发布时间】:2013-05-03 13:34:50 【问题描述】:

我们有一个生产中的现有数据库。我们决定使用 liquibase 进行所有进一步的更新并创建任何新的数据库(如开发或集成)。

我们基于现有的生产模式创建了 liquibase 脚本(用于创建任何新的数据库,如开发、集成等)。在该脚本之上,我们还添加了另外两个更新。今后对生产数据库的所有进一步更新都将由 liquibase 完成。

如果我们在生产环境中执行 liquibase,它会尝试进行所有完整的更改,即使是那些已经存在的更改,这不应该发生,因为生产环境已经拥有除了两个新更新之外的所有内容。现在我们想使用 liquibase 将这两个更改单独更新到产品中。

我们如何做到这一点?

【问题讨论】:

【参考方案1】:

将现有数据库置于 liquibase 控制之下的过程如下:

    创建初始变更日志(这就是您所做的) 使用命令changelogSync 运行liquibase。这将创建 Liquibase 表并将所有更改集标记为已应用(这是您错过的) 添加您的变更集 使用命令 update 运行 liquibase 以应用更改集。

【讨论】:

这是我一直在寻找的答案。谢谢:) 假设我的生产模式是“s1”。现在我在另一个名为“s2”的模式中创建了我的更改。我已经完成了你所说的第 1 和第 2 部分。接下来,我在 s1 和 s2 之间创建了一个差异,并将所有差异文件内容附加到第 1 节中创建的 changeLong 的末尾。然后我运行更新命令但过程失败:(((。出了什么问题? 这是如何创建初始变更日志的吗? ***.com/questions/12449824 @surfmuggle: docs.liquibase.com/workflows/liquibase-community/… 谢谢!谷歌仍然指向这个empty url

以上是关于在现有数据库上使用 liquibase的主要内容,如果未能解决你的问题,请参考以下文章

将 Liquibase 引入现有项目和 MySQL

将 liquibase 添加到现有 Spring Boot 项目的正确方法

liquibase 从表中加载数据

从 MySQL 中的现有表生成更改日志时,liquibase 如何处理自动递增的 PK?

无法与 liquibase gradle 插件生成差异

唯一约束 (indexExists) 的 Liquibase 前提条件不适用于 HSQLDB 数据库?