当前位置: 首页 > news >正文

【案例91】记一次高级版升级环境报错“fail to save VO Array”

问题现象

YonBIP高级版 2305(2207SP) 正式环境升级报错fail to save VO Array ~#@:

问题分析

YonBIP高级版 2305(2207SP) 正式环境升级报错fail to save VO Array日志文件为:

nchome/nclogs/server/am-log*.log

$$callid= $$thread=[InstallDBThread] $$host= $$userid= $$ts=2024-06-15 14:10:01   $$debuglevel=ERROR  $$msg=fail to save VO Array ~#@ 
 nc.md.model.MetaDataException: fail to save VO Array ~#@
	at nc.md.persist.framework.imp.VOPersister.saveItemHas(VOPersister.java:749)
	at nc.md.persist.framework.imp.VOPersister.saveItems(VOPersister.java:690)
	at nc.md.persist.framework.imp.VOPersister.saveVOS(VOPersister.java:285)
	at nc.md.persist.framework.imp.MDBaseDAO.handleBill(MDBaseDAO.java:55)
	at nc.md.persist.framework.imp.MDBaseDAO.saveBill(MDBaseDAO.java:96)
	at nc.md.persist.framework.imp.MDBaseDAO.saveBill(MDBaseDAO.java:85)
    .....
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at nc.bs.framework.ejb.AbstractEJBServiceHandler.invoke(AbstractEJBServiceHandler.java:58)
	at nc.bs.framework.ejb.AbstractEJBServiceHandler.invoke(AbstractEJBServiceHandler.java:36)
	at jdk.proxy2/jdk.proxy2.$Proxy26.delegate(Unknown Source)
	at nc.bs.framework.ejb.CMTEJBServiceHandler.invoke(CMTEJBServiceHandler.java:32)
	at jdk.proxy2/jdk.proxy2.$Proxy622.saveBill(Unknown Source)
	at nc.impl.bd.material.pf.MaterialPfServiceImpl.insertTabs(MaterialPfServiceImpl.java:344)
	at nc.impl.bd.material.pf.MaterialPfServiceImpl.insertMaterialTabs(MaterialPfServiceImpl.java:310)
	at nc.impl.bd.material.pf.MaterialPfServiceImpl.insertMaterialPFBaseVO(MaterialPfServiceImpl.java:250)
	at nc.impl.bd.material.pf.MaterialPfServiceImpl.upgradeMaterialPfVO(MaterialPfServiceImpl.java:502)
     ...........
	at jdk.proxy2/jdk.proxy2.$Proxy26.delegate(Unknown Source)
	at nc.bs.framework.ejb.CMTEJBServiceHandler.invoke(CMTEJBServiceHandler.java:32)
	at jdk.proxy2/jdk.proxy2.$Proxy784.upgradeMaterialPfVO(Unknown Source)
	at nccloud.pubimpl.uapbd.basedoc.BaseDocPfUpdateForVersion.upgradeMaterialPfVos(BaseDocPfUpdateForVersion.java:415)
	at nccloud.pubimpl.uapbd.basedoc.BaseDocPfUpdateForVersion.updateMaterialPf(BaseDocPfUpdateForVersion.java:377)
	at nccloud.pubimpl.uapbd.basedoc.BaseDocPfUpdateForVersion.doAfterUpdateData(BaseDocPfUpdateForVersion.java:97)
	at nc.bs.sm.accountmanage.AccountCreateImpl.classAdjust_RequiresNew(AccountCreateImpl.java:74)
    ............
	at nc.bs.framework.ejb.AbstractEJBServiceHandler.invoke(AbstractEJBServiceHandler.java:36)
	at jdk.proxy2/jdk.proxy2.$Proxy26.delegate_RequiresNew(Unknown Source)
	at nc.bs.framework.ejb.CMTEJBServiceHandler.invoke(CMTEJBServiceHandler.java:30)
	at jdk.proxy2/jdk.proxy2.$Proxy651.classAdjust_RequiresNew(Unknown Source)
	at nc.bs.sm.accountmanage.AccountManageImpl.doinstallSingleModule(AccountManageImpl.java:2185)
	at nc.bs.sm.accountmanage.AccountManageImpl.doInstallModule(AccountManageImpl.java:1698)
	at nc.bs.sm.accountmanage.AccountManageImpl.doInstallProduct(AccountManageImpl.java:1297)
	at nc.bs.sm.accountmanage.AccountManageImpl.doInstallDB(AccountManageImpl.java:667)
	at nc.bs.sm.accountmanage.AccountManageImpl.doInstallDB(AccountManageImpl.java:585)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    ..........
	at nc.bs.framework.aop.rt.AspectedProxy.invoke(AspectedProxy.java:60)
	at jdk.proxy3/jdk.proxy3.$Proxy649.doInstallDB(Unknown Source)
	at nc.bcmanage.bs.BusiCenterManageImpl$InstallRunnable.run(BusiCenterManageImpl.java:384)
	at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: nc.bs.dao.DAOException: sql:INSERT INTO bd_materialcost_pf (pk_group,pk_materialcost,modifier,dr,pk_org,pk_material,def30,def31,def32,dataoriginflag,def33,def34,def35,def36,def37,def38,def39,def20,def21,def22,def23,def24,def25,def26,def27,def28,creationtime,def29,costprice,modifiedtime,def10,def11,def12,def13,def14,def15,def16,def17,def18,def19,def3,def4,def1,creator,def2,def40,def9,def7,def8,def5,def6) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) 
ORA-00001: 违反唯一约束条件 (JKBIP.I_MATERIALCOST_PF_1)
	at nc.bs.dao.BaseDAO.insertObjectWithPK(BaseDAO.java:742)
	at nc.md.persist.framework.imp.VOPersister.saveItemHas(VOPersister.java:737)

根据日志发现是 ORA-00001: 违反唯一约束条件 (JKBIP.I_MATERIALCOST_PF_1)

根据和开发沟通,该索引I_MATERIALCOST_PF_1可以去掉:

Caused by:

nc.bs.dao.DAOException:sql:INSERT INTO bd_materialcost_pf (pk_group,pk_materialcost,modifier,dr,pk_org,pk_material,def30,def31,def32,dataoriginflag,def33,def34,def35,def36,def37,def38,def39,def20,def21,def22,def23,def24,def25,def26,def27,def28,creationtime,def29,costprice,modifiedtime,def10,def11,def12,def13,def14,def15,def16,def17,def18,def19,def3,def4,def1,creator,def2,def40,def9,def7,def8,def5,def6) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)

ORA-00001: 违反唯一约束条件 (JKBIP.I_MATERIALCOST_PF_1)

项目顾问在数据库执行 drop index I_MATERIALCOST_PF_1 后,

账套升级 仍然报错: fail to save VO Array

解决方案

在nchome的文件fi_nc_pub_bd.sql中找到创建索引的脚本,然后从fi_nc_pub_bd.sql

文件中删除掉,再次账套升级,不再报错,可以正常升级。

home\ncscript\ria\uapbd\L_0\dbcreate\SQLSERVER\00002\fi_nc_pub_bd.sql

相关文章:

  • 批处理脚本的主要解析规则
  • 正确安装PyTorch
  • WebSocket通信协议
  • OpenCV引擎:驱动实时应用开发的科技狂飙
  • leecode第19天
  • 使用YoloV5和Mediapipe实现——上课玩手机检测(附完整源码)
  • 使用 PyTorch 的 `torch.rot90` 进行张量旋转:数据增强的利器
  • 用matlab搭建一个简单的图像分类网络
  • OpenCV 图形API(14)用于执行矩阵(或图像)与一个标量值的逐元素乘法操作函数mulC()
  • Nyquist内置函数-概述
  • Spring Task 定时任务
  • 呼叫中心系统压力测试文档
  • C++模板元编程与表达式模板技术深度解析:从原理到Eigen实战
  • Pysides6 Python3.10 Qt 画一个时钟
  • zotero配合本地deepseek使用(翻译、辅助阅读)
  • Ubuntu桌面系统安装VirtualBox教程
  • 企业服务器备份软件,企业服务器备份的方法有哪些?
  • 大语言模型本质上还是自动化,而不是智能化
  • Scala面向对象2
  • 冒泡排序笔记