对应版本:用友U其他对应产品线:公共平台对应模块:系统管理模块问题现象:zt001.part1.rar,zt001.part2.rar为徐州矿务集团物资供销公司的账套输出备份分卷压缩后的生成两个文件,该账从u852升级至u860时报错,请求支持。具体问题现象:升级到脚本data860_ia.sql时发生错误,错误信息:-2147217833将截断字符串或二进制数据.问题原因:一、问题现象:升级到脚本data860_ia.sql时发生错误,错误信息:-2147217833将截断字符串或二进制数据执行如下语句时出错:--明细帐数据升级脚本gp2004-4-21updateia_subsidiarysetia_subsidiary.cbatchia=rdrecords.cbatch,ia_subsidiary.dmadedateia=rdrecords.dmadedate,ia_subsidiary.imassdateia=rdrecords.imassdate,ia_subsidiary.cmassunit=rdrecords.cmassunit,ia_subsidiary.dvdateia=rdrecords.dvdate,ia_subsidiary.csaleordercode=so_somain.csocode,ia_subsidiary.isaleorderid=so_somain.[id],ia_subsidiary.isaleordersid=so_sodetails.autoid,ia_subsidiary.isaleorderids=so_sodetails.irowno,ia_subsidiary.cpurordercode=po_pomain.cpoid,ia_subsidiary.ipurordersid=po_podetails.[id],ia_subsidiary.idlsid=dispatchlists.dlid,ia_subsidiary.inum=rdrecords.inum,ia_subsidiary.cassunit=rdrecords.cassunitfromia_subsidiaryleftjoinrdrecordsonia_subsidiary.[id]=rdrecords.autoidleftjoinrdrecordon(rdrecords.[id]=rdrecord.[id]andia_subsidiary.cvoutype=rdrecord.cvouchtype)leftjoinso_sodetailsonrdrecords.isodid=so_sodetails.isosidleftjoinso_somainonso_sodetails.[id]=so_somain.[id]leftjoinpo_podetailsonrdrecords.iposid=po_podetails.[id]leftjoinpo_pomainonpo_podetails.poid=po_pomain.poidleftjoindispatchlistsonrdrecords.idlsid=dispatchlists.autoidwhereia_subsidiary.cvoutype=’01’oria_subsidiary.cvoutype=’08’oria_subsidiary.cvoutype=’09’oria_subsidiary.cvoutype=’10’oria_subsidiary.cvoutype=’11’oria_subsidiary.cvoutype=’32’go二、问题分析:‘将截断字符串或二进制数据’错误应是更新数据时,源数据非法,如类型不匹配,长度过长等原因;对update语句中的set对象,对每一个更新字段分别执行,以准确定位错误发生的具体字段位置;当单独执行updateia_subsidiarysetia_subsidiary.cpurordercode=po_pomain.cpoidfrom...时报同样错误,查询selectia_subsidiary.cpurordercode,po_pomain.cpoidfrom...orderbypo_pomain.cpoiddesc分析方向:1、检查非法字符;2、检查数据长度(selectmax(len(cpoid))frompo_pomain,返回值29);检查数据表中字段属性:ia_subsidiary.cpurordercode:varchar(20)po_pomain.cpoid:varchar(30)问题原因:采购订单中cpoid可以允许30位长,而且也存在20多位的数据记录,更新存货明细帐时,写入目标字段定长只有20,故发生‘将截断字符串或二进制数据’错误。问题2:继续升级,当升级到脚本DPRD860_ST.sql时报错;后台跟踪查询,发现执行‘过程dbd_zq’时出错,但脚本中未涉及到过程dbd_zq;故怀疑可能存在用户自行添加的触发器,查看表transvouch,存在触发器dbd_zq,对比模板库、演示帐套,均不存在该触发器。解决方案:一、解决方法:1、由于cpoid是po_pomain的主键,不可手工截断数据;2、为确保数据的延续性、一致性、正确性,考虑修改ia_subsidiary的数据结构,从表设计中将字段cpurorercode属性改为varchar(30),再执行升级。另该问题已有补丁,补丁版本:860补丁日期:2004年11月25日补丁编号:1575补丁名称:DSTR860_IA.sqlU860数据升级失败,字段长度不一致(销售或采购订单号超过20位结转失败)另对1575补丁中的如下补丁也应替换到系统中(\\u8soft\\admin\\对应的sqlfile***目录下,可通过搜索文件名查询文件对应具体路径)2005年2月23日DPRD851_PU.SQL2004年12月27日DPRO860_ST_PU.sql(注:该些文件涉及升级,必须替换)二、解决方法:继续升级,当升级到脚本DPRD860_ST.sql时报错;后台跟踪查询,发现执行‘过程dbd_zq’时出错,但脚本中未涉及到过程dbd_zq;故怀疑可能存在用户自行添加的触发器,查看表transvouch,存在触发器dbd_zq,对比模板库、演示帐套,均不存在该触发器。删除该触发器,执行升级成功。

微信号:yyrjlls
技术咨询,有偿服务!
复制微信号
本文链接:https://www.bbsufida.com/u8/42441.html