mysql - 引入 Liquibase 数据库迁移到现有产品

标签 mysql liquibase rpm legacy

我正在使用 RPM 将 Liquibase 数据库迁移添加到我们当前的产品部署中,并正在寻找一些有关如何实现我的预期目标的建议/技巧。

最好,RPM 能够安装在全新且 Shiny 的开发人员环境以及现有集成/生产系统中。

我已经使用generateChangeLog创建了当前(liquibase之前)数据库模式的xml变更日志,并且我已经创建了主变更日志并准备好根据需要继续使用新的变更集。

但是,我正在尝试确定有条件地在必要时一次性执行生成的初始模式的最佳方法(即:在全新的数据库上)。上下文似乎不太理想,只是因为我需要一些其他外部方式来与 RPM 沟通它应该作为什么上下文运行,而这似乎很容易出错。

我还希望旧版生成的更改日志显示为已在 DATABASECHANGELOG 表中运行,以使项目看起来好像一直由 liquibase 管理。

感谢任何帮助或指导,

提前致谢

最佳答案

您可以将所有初始 lb 更改放入一个变更集中,并将前提条件 tableExists 放入该变更集中,检查模型中的任何表。如果该表不存在 -> 您有一个空数据库,因此您的大变更集将创建所有对象。如果该表存在 -> 您正在现有数据库上运行,那么应该跳过它(在前提条件下使用 onFail="MARK_RAN")。

关于mysql - 引入 Liquibase 数据库迁移到现有产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48153245/

相关文章:

MySQL 行到列

python pymysql设置autocommit false失败

php - select with count in sub select 由于 group by 子句而给出不需要的结果

java - 针对不同目标的不同 Maven 配置

mysql - Liquibase 回滚不适用于 "Liquibase Rollback Successful"

java - Liquibase:将列更改为 DB2 中的自动增量列(标识)

rpm - 如何在 RPM 包中使用 systemd 预设

centos - 打包RPM时如何设置已安装(谁在安装RPM)用户和组权限

php - 防止多字表单字段 PHP MySQL

linux - 在安装 RPM 之前验证 Linux 软件包