常见问题

1. 为啥我的数据里自动生成的表里,只有block_task_pool和block_detail_info表有数据?

A: block_task_pool和block_detail_info表是链的基本数据,只要服务正常运行,这两个表肯定会有数据。首先,请检查连接的区块链的地址、端口是否正确。其次,你需要检查合约的版本。如果你升级了合约,但链上执行的合约都是老版本的合约,这个时候就无法获得数据。最后,需要检查合约中是否定义了Event、显式定义了构造函数;如果没有定义,是不会有Event和构造函数的表的。

2. 我在链上部署了多个项目的合约,其中的包名并不同,能在同一个工程里导出数据吗?

A:可以。只需要手动将编译生成的合约代码的包名改为同一个,然后在配置文件中将monitor.contractPackName配置为该包名,并按照之前的方式配置、重启,即可导出所有合约的数据。

3. 如果我的链上所执行的合约是低于V1.2.0版本的怎么办?还可以导出来吗?

A: 可以,但需要进行特殊的操作。 首先,找到你原有的历史合约,然后使用1.2.0版本的web3sdk进行编译得到V1.2.0版本的Java文件,合约代码转换为java代码,复制每个Java文件里的ABI字段。然后找到你用之前版本的web3sdk曾经编译的Java代码,注意请保证你安装的fisco-solc与之前的版本一致,将刚才V1.2.0版本Java文件中的ABI字段手工拷贝到之前Java代码中。最后将此定制的Java代码放入到配置文件夹中,按手册生成和执行。

4. 假如我的合约升级了怎么办,能否导出历史和更新后的合约数据?

A:可以。但是会被作为两个数据库表来进行存储,因为合约的数据结构等可能会改变。操作方法:你也猜到了,我们建议建立版本号,将升级的合约与旧版本的合约Java文件,使用不同的命名,保存到配置文件下面。