HLF2.3调用链码时报fabcar定义存在但未安装错误如何解决
Hyperledger Fabric链码调用报错解决方法
错误根因
调用时指定的背书节点中,存在节点安装的链码包ID与通道上已提交的fabcar链码定义绑定的包ID不匹配,导致节点无法识别已提交的链码。
解决步骤
第一步:查询通道上链码定义绑定的官方包ID
执行以下命令获取必须匹配的链码包ID:docker exec cli peer chaincode querycommitted -C mychannel -n fabcar输出结果中的
Package ID字段即为所有背书节点必须安装的唯一正确包ID。第二步:清理节点上多余的不匹配链码包
你提供的host1节点存在3个标签同为fabcar_1的链码包,仅ID为fabcar_1:7ed63d49b5b7ff8f8f17cf3106975e1b731b3d1f7c417ef050a24315ef828085的包和host2节点的安装包一致。如果上一步查询到的官方包ID就是该值,直接删除host1上另外两个不匹配的包:docker exec cli peer chaincode deleteinstalled fabcar_1:a8fdf3e70eaa79c8481356484661fe3c763b5fc744ca82c8c564ece77a83cf8b docker exec cli peer chaincode deleteinstalled fabcar_1:cd4f25953c7b04623652da137067c386062bf1b9a6de0e710c72f11e81c7ea0c第三步:安装缺失的匹配链码包(如果需要)
如果查询到的官方包ID存在某台节点未安装的情况,先在已安装该包的节点导出链码包:docker exec cli peer chaincode getinstalledpackage -p <官方包ID> -o ./fabcar_match.tar.gz将导出的压缩包复制到未安装节点后执行安装:
docker exec cli peer chaincode install ./fabcar_match.tar.gz安装完成后执行
docker exec cli peer chaincode list --installed确认包ID和官方值一致。第四步:重启peer节点刷新状态
执行重启操作让节点同步最新链码安装状态:docker restart peer0.org1.example.com peer0.org2.example.com第五步:重新执行链码调用命令
完成上述操作后重新运行你原来的invoke命令即可正常执行。
内容的提问来源于stack exchange,提问作者adite
相关产品推荐
相关产品推荐

