问题现象:
财务通升级T3报错,无法将NULL值插入列'iorder',如下图:
解决办法:
1、标题提示的是升级到10.6Plus1产生的错误,那么先找到升级10.6Plus1对应的脚本文件,使用以下语句可查看:
select cUpdateSript from ufsystem..UA_VersionUpdate where cVersionName like '%10.6Plus1%'
通过以上方法,得知升级10.6Plus1对应的脚本文件是Update105sp1.sql,在T3安装目录的admin文件夹下,找到此文件打开
2、根据错误提示,定位到错误语句附近分析,【无法将NULL值插入列'iorder'】——这是错误提示,那么就来看与iorder取值相关的语句
首先是set @iorder = isnull((select max(iorder) + 1 from ufsystem..ua_sysflow where csysid='BI'),1) 一句,执行没有问题
再看 set @iorder = (select max(iorder) + 1 from ufsystem..Ua_UserFlow where cUserID = @cUser and csysid='BI')
执行此句,结果显示NULL,看来这就是问题所在了,语句没有考虑NULL的情况,对语句做如下修改:
set @iorder = isnull((select max(iorder) + 1 from ufsystem..Ua_UserFlow where cUserID = @cUser and csysid='BI'),1)
3、再使用系统管理进行SQL数据升级,成功升级!