两个方法解决NC6元数据升级无效问题

一、NC元数据提示升级成功但实际却没有生效

实际开发中经常遇到这个问题,没有使用标准的扩展开发,而是直接更改了元数据,在前台“元数据管理”节点中升级后,明明提示了升级成功但是却没有生效,下面给出两种解决办法。

1.1 修改版本字段

跟踪代码后,我发现这算是一个bug,在源码的PublishServiceImpl.publishMetaDataForUpgrade方法中,发布元数据时,会校验元数据版本,若版本小于等于当前元数据,会发布失败,但前台提示还是“元数据升级成功”,这算是一个坑。
解决方法很简单,在eclipse或notepad++中直接修改version字段,修改为大于当前的版本就可以了。
怎么确定是否真的大于呢?
用这条sql可以查询当前数据库中的元数据版本:

select * from md_component where id = '54895263-63e6-4088-b580-b1a3580230e3' and industry = '0' and versiontype = '0'
1.2 通过SQL解决

如果你发现修改元数据后,版本号刷新了,但是你的元数据依然没有生效,那么就可以直接通过SQL脚本来解决这个问题(当然我没有遇到过这个问题,这只是假设)。
这个办法的前提是你有一个测试环境,你可以在测试环境中用eclipse的发布元数据功能,这样测试环境的元数据就是你想要的状态了,然后再对比测试与生产的md_property、md_component、md_class、md_enumValue、md_accessorPara、md_bizItfMap、md_association、md_table、md_column、md_ORMap、md_db_relation这些表,手动导出不同的部分,然后会形成一个sql脚本,将这个脚本在生产执行就有解决问题的可能了。

注意!!这里说的是可能,并不是一定可以解决问题,如果不行还需要自己多摸索一下,就算是一个字段的不同也会导致元数据“损坏”。

所以!!!每个表都要好好备份,不然坏了就是真的坏了,元数据损坏会导致单据无法使用,你懂得,准备扣工资吧。

最后,你可能会想为什么不直接用eclipse连接生产库执行发布元数据功能,或者导出脚本后手动到生产执行,第一有些项目甲方是禁止直接连接生产库的,第二这也并非是集团推荐的做法,损坏后集团也不会通过支持,第三后者我也尝试过,并没有什么卵用。

所以,还是祝大家不要遇到这个问题吧。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值