预编译合约错误码及应对措施¶
标签:预编译合约
预编译错误码
错误信息
RetCode
预编译合约主要有两种传递错误的方式,一种是在接口返回具体的数字值,错误时一般是小于0的负数;另外一种则是抛异常,在回执的状态码为15,这时用户可以主动解析回执中的message
字段,做进一步的错误分析。
下表主要展示在接口会返回的错误码,以及遇到对应错误码时所需要做的措施。
错误码 | 错误信息 | 错误信息/应对措施 |
---|---|---|
0 | Success | 成功 |
-53006 | 错误的文件类型 | 在调用BFS touch接口时才会出现,使用了错误的文件类型 |
-53005 | 错误的文件路径 | 在调用BFS接口传入绝对路径时会出现这样的错误,BFS的绝对路径总长度不能超过56,路径的总级数不能超过6级,且不能带有特殊字符 |
-53003 | 创建文件夹失败 | 在调用BFS link接口时创建文件夹出现异常,比如合约名对应的父文件夹已经存在 |
-51202 | 传入的版本号或者地址是错误的 | 在调用BFS link接口时会出现,版本号不能带有'/',合约地址也必须存在 |
-53002 | 文件已经存在 | 在调用BFS 写接口时,创建的文件名已经存在 |
-53001 | 文件不存在 | 在调用BFS读接口时,绝对路径对应的文件不存在 |
-51800 | 环签名验证失败 | 在调用ring precompiled的验证接口失败时会出现,检查传入的参数是否正确 |
-51700 | 群签名验证失败 | 在调用group precompiled的验证接口失败时会出现,检查传入的参数是否正确 |
-51508 | Remove的key不存在 | 在调用Table预编译合约的remove接口时会出现,remove的key不存在 |
-51507 | Update的key不存在 | 在调用Table预编译合约的update接口时会出现,update的key不存在 |
-51506 | Insert的key已经存在 | 在调用Table预编译合约的insert接口时会出现,insert的key已经存在 |
-51103 | 节点ID不存在 | 在调用Consensus预编译合约时会出现,传入的node id参数不存在 |
-51102 | 错误的节点权重值 | 在调用Consensus预编译合约的setWeight和addSealer接口时会出现,设置的权重不能小等于0 |
-51101 | 不能删除最后一个共识节点 | 在调用Consensus预编译合约的removeNode和addObserver接口时会出现,不能将链上最后一个共识节点删除 |
-51100 | 错误的节点ID | 节点ID必须是128长度的16进制字符串 |
-51004 | 合约方法的ACL map解码错误 | 在调用合约权限预编译合约时会出现,权限方法的ACL map解码错误,要考虑存储是否写坏了 |
-51003 | 错误的权限类型 | 在调用合约权限预编译合约的设置权限类型时会出现,目前支持的类型只有白名单和黑名单两种 |
-51002 | 合约方法的ACL 类型不存在 | 在调用合约权限预编译合约的读接口会出现,类型不存在一般是因为没有设置,默认当作所有用户都可以调用 |
-51001 | 合约方法的ACL 不存在 | 在调用合约权限预编译合约的读接口会出现,ACL不存在一般是因为没有设置,默认当作所有用户都可以调用 |
-50105 | Open table error | 内部错误,打开存储表失败 |
-50104 | Create table error | 内部错误,创建存储表失败 |
-50103 | Table set row error | 内部错误,写存储表失败 |
-50102 | Invalid address format | 内部错误,地址的格式错误 |
-50101 | Undefined function | 内部错误,调用的预编译合约方法不存在 |
-50100 | Table not exist | 内部错误,访问的表不存在 |
-50007 | Table存在字段重复 | 在调用TableManager预编译合约的createTable和appendColumn接口时会出现,存在重复的字段 |
-50006 | Table的字段值超长 | 在调用Table预编译合约的写接口时会出现,写入的字段值太长了,超过了16MB |
-50005 | Table的键值超长 | 在调用Table预编译合约的写接口时会出现,写入的键值太长了,超过了255 |
-50003 | Table的字段名超长 | 在调用TableManager预编译合约的createTable和appendColumn接口时会出现,字段名超过了64 |
-50002 | Table的表名超长 | 在调用TableManager预编译合约的createTable接口时会出现,表名超过了50 |
-50001 | 表已经存在 | 在调用TableManager预编译合约的createTable接口时会出现,表名已经存在 |
-50000 | 没有访问权限 | 在开启权限模式下,直接访问System、Consensus、AuthManager预编译合约将会出现,没有直接访问的权限 |