tuqin
2 天以前 601eca3d487e9833ffc6253579bb85496f767f23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
-- ============================================================
-- 修复「流程模型 → 修改 → 流程设计 → 保存」失败
--
-- 现象:报「操作流程失败,原因:你不是该流程(xxx)的管理员」,
--       或修掉管理员问题后变成「系统异常」
--       (FlowableOptimisticLockingException: was updated by another transaction concurrently)
--
-- 根因有两个,都出在从备份恢复/迁移过来的 act_re_model 数据上:
--
-- 1) META_INFO_ 里 managerUserIds 为空数组或缺失
--    后端 updateModel 是「先校验管理员、后写入」,校验读的是库里的值,
--    所以一旦为空就永久校验失败,无法自愈(前端怎么传新值都没用)。
--
-- 2) REV_(Flowable 乐观锁版本号)为 NULL
--    saveModel 时的 UPDATE 条件带 REV_ = ?,为 NULL 时匹配不到任何行,
--    Flowable 认为被并发修改,抛 OptimisticLockingException → 前端显示「系统异常」。
--
-- 执行后需重启后端服务(Flowable 有模型缓存)。
-- ============================================================
 
-- 1) 补齐流程管理员:空数组 → 超管(1);缺失该字段的,补到 visible 后面
UPDATE act_re_model
SET META_INFO_ = REPLACE(META_INFO_, '"managerUserIds":[]', '"managerUserIds":[1]')
WHERE META_INFO_ LIKE '%"managerUserIds":[]%';
 
UPDATE act_re_model
SET META_INFO_ = REPLACE(META_INFO_, '"visible":true', '"visible":true,"managerUserIds":[1]')
WHERE META_INFO_ NOT LIKE '%managerUserIds%';
 
-- 2) 补齐乐观锁版本号
UPDATE act_re_model SET REV_ = 1 WHERE REV_ IS NULL;