activiti工作流共用数据库版本冲突解决

背景

之前做一个新项目 A 的时候,由于某些原因需要跟另外一个项目 B 共用数据库,刚开始开发的时候为了不影响项目 B 的开发和测试,我们拷贝了一个数据库进行开发。

问题

终于等到开发完想要部署测试的时候用回了原来的数据库,出现了一个尴尬的问题 ̄□ ̄||,因为两个项目都用activiti工作流,而且版本还不一致,新项目 A 用了6.0.0,旧项目 B 用的5.21.0,出现了版本冲突,导致旧项目 B 无法启动。

眼看上线deadline越来越近,得赶紧解决这个版本冲突的问题,于是就有了下文的探索过程。(这里插一句,使用第三方组件还是要了解清楚,出现版本冲突的问题,确实不应该 T ^ T)

尝试 1

尝试兼容版本,我们将旧项目 B 升级版本或者新项目 A 降低版本,发现都不行,因为这两个版本有一些功能、用法都是不一样的,无法兼容,而且也没有中间版本可以同时兼容。如果强行转换版本,就要修改代码,这样工作量太大,赶不及上线了o(╥﹏╥)o

尝试 2

代码都是人写的,既然无法兼容版本,那只能从源码入手,尝试跳过版本检验。我们通过查阅activiti工作流的相关资料,发现一些眉目,有一个参数配置 databaseSchemaUpdate 跟版本有关,databaseSchemaUpdate属性的取值:

  • flase: 默认值。activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常。
  • true: 版本相等不做操作,数据库版本低进行更新操作,数据库版本高则抛出异常。如果表不存在,则自动创建。
  • create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)。
  • drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)。
  • create:直接创建表

很遗憾,没有办法告诉我们如何跳过版本校验,我们不想进行版本匹配,更不想重建数据表。不过注意到 flase是进行版本匹配、true进行更新没有说到版本匹配

尝试 2.1

先从true入手,那我们可以猜测如果都设为true,然后旧项目 B 先启动,新项目 A 后启动行不行?这样虽然表更新了,但是旧项目 B 已经启动了呀。试了下,确实是可以的,但是数据库版本号升高了,旧项目 B 再也启动不起来了。( ̄ェ ̄;)
在这里插入图片描述
再猜测,新项目 A 先启动,然后手动把数据库版本改回去࿰

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值