• 两个方法解决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

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

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

  • 相关阅读:
    Redis基本数据结构及底层实现原理
    AndroidApp学习笔记
    MATLAB算法实战应用案例精讲-【数模应用】欧氏距离(附MATLAB、Java、Python和R语言代码)
    Ansible 批处理实战
    波卡生态中“中继链”、“DOT”的常见问题解答
    并非所有边都是对等的:准确的结构感知图池网络(下)
    c++ chilkat-9.5.0 库使用CkZipW创建压缩包
    国际结算习题集及答案
    JDBC封装查询单个和查询多个
    Jupyter 报错:can‘t convert np.ndarray of type numpy.object_.
  • 原文地址:https://blog.csdn.net/qq_42994789/article/details/126122189