最近在升级 财务云+供应链云+供应链和制造服务云 这三个云,在升级时,遇到了非常多的异常信息,由于跨版本升级,出现了表结构异常问题。
我通过手动解决表结构异常问题,成功升级了财务云,写个文章做一个总结。
异常信息非常地多,因为跨版本升级了
解决思路
解决方案我想出来3种方案
方案1:手动修改表结构,使用sql工具,连上苍穹的数据库,手动增加表字段、修改字段结构。
有一点问题,我们没有办法知道字段类似是什么,所以只能通过缺少的字段名称,或者是报错的那一行sql语句来猜测。
方案2:使用sql工具,连上苍穹的数据库,查询t_meta_entity表,找到用了这个sql表的单据实体。进入对应的单据页面,点击保存即可,苍穹底层会自动根据页面上的元数据去插入表字段。
有两点问题,如果单据页面是财务云里面的,开发商标识不一致,无法直接保存,只能扩展页面,然后进行保存;
如果需要修改字段长度,只能在sql工具中手动修改,苍穹设计器的保存,不支持修改字段长度。
方案3:在苍穹的全部历史补丁当中,找到对应的sql表的更新,执行对应sql脚本。
这个需要将全部历史补丁里面,每个sql脚本都排查一遍,由于此次升级版本跨度很大,有非常多的sql文件,排查sql文件很耗时间,我在解决此次升级过程中,仅用了第一个和第二个方案。
解决实例
实例1:
如图,提示T_SCA_MFGFEEALLOCSTD表中,不存在FALLOCMOLD字段。
看到后面的判断条件:FALLOCMOLD = 'C',这里使用了字符进行判断,所以FALLOCMOLD字段应该是一个用来存储状态的字段,他的的类型应该是一个varchar。
使用sql工具,连接苍穹数据库,如果做了分库,要连接 业务云所对应的分库。
执行修改表结构命令:
ALTER TABLE T_SCA_MFGFEEALLOCSTD add FALLOCMOLD varchar(30);
实例2:
下面这个升级异常,我用了方案2来解决。
(1)首先 查看详情,这里提示 更新T_CAL_COSTADJUSTBILL表,FBILLSRCTYPE字段不存在。
(2)使用sql工具,连接苍穹数据库,如果做了分库,要连接 财务云所对应的分库,因为fi就表示财务云。
使用sql命令,查找使用了T_CAL_COSTADJUSTBILL表的对应的单据标识:
select * from t_meta_entity where fdata like '%T_CAL_COSTADJUSTBILL%';
(3)复制单据标识,进入苍穹开发平台
(4)扩展cal_costadjustbill所在的应用,扩展cal_costadjustbill这个单据
扩展对应页面,进入扩展页面
点击保存
最终升级成功
处理完异常之后,再次升级,最终升级成功
推荐阅读