苍穹升级脚本报错ORA-01441: cannot decrease column length because some value is too big
一、问题描述
苍穹升级脚本报错ORA-01441: cannot decrease column length because some value is too big
二、解决方法
1、查询具体表类型及长度
1) 查询具体库中表T_ER_REIMBURSEENTRY中列FTOCITYSTR类型为varchar(255)
2) 再检查此表中具体字段实际占用长度
综合上面结果,实际改为varchar(100)是不允许的,可以跳过,按下面步骤处理
2、根据日志记录慢慢往上找,找到这个部分升级的应用er
如图中样例次部分升级应用id为er
3、在这个数据中心对应的meta库中查询应用信息
select FENTRYID from T_BAS_DEPLOYINFOENTRY where FAPPID = 'er' order by fid desc;
其中‘er’为找到的应用id,找到最近一条执行记录的fentryId,如上查询得到fentryid=671048257861846038
4、在meta库表t_bas_deployinfodetail 中插入一条数据,将fentryid设置为前面查询到的fentryId,将ffilename设置为出错脚本名:
1) 插入操作前,需要获取表t_bas_deployinfodetail中其他字段值(FDETAILID、FENTRYID、FEXECTIME、FFILENAME)
FDETAILID:取表t_bas_deployinfodetail中此列最大值再+1即不会重复:
select max(to_number(fdetailid)) from t_bas_deployinfodetail 得到值为=1657182961348379649,插入值为1657182961348379649+1=1657182961348379650
2) FENTRYID:为前面查询得到值=671048257861846038
select FENTRYID from T_BAS_DEPLOYINFOENTRY where FAPPID = 'er' order by fid desc
3) FEXECTIME:时间取当前时间插入即可
to_date(‘2023-04-06 16:05:00’,’YYYY-MM-DD HH24:MI:SS’)
FFILENAME:为升级脚本报错的名称:kd_er_1.5.155_table_er_tripreimbursebill.sql,插入截图如下:
5、commit提交,确认插入到meta库下表记录无误,重新执行升级即可
6、本次语句整理如下:
select FENTRYID from T_BAS_DEPLOYINFOENTRY where FAPPID = 'er' order by fid desc;
select max(to_number(fdetailid)) from t_bas_deployinfodetail --1657182961348379649;
insert into t_bas_deployinfodetail values('1657182961348379650','671048257861846038','to_date('2023-04-06 16:05:00','YYYY-MM-DD HH24:MI:SS',' kd_er_1.5.155_table_er_tripreimbursebill.sql ');
苍穹升级脚本报错ORA-01441: cannot decrease column length because some value is too big
本文2024-09-23 01:14:21发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144670.html