Fabric区块链浏览器启动报错Error : [ 'Explorer is closing due to channel name [%s] is already exist in DB'...]

Fabric区块链浏览器启动报错

[ERROR] Sync - Error : [ 'Channel name [%s] already exist in DB , Kindly re-run the DB scripts to proceed',
'*****' ]
Error : [ 'Explorer is closing due to channel name [%s] is already exist in DB'...]

报错截图如下:

在用docker部署区块链浏览器的时候,出现这个错误,网上查找也没有任何相关的博文,反复检查后发现不是配置文件的问题,按照报错信息很容易想到应该是Explorer-db里面存在了脏数据。那么解决思路就很显然了,登录数据库,删除这个channel。

首先 docker ps 查询一下Explorer-db容器id

docker ps

第二步 进入容器

docker exec -it 05b3a3471f6f bash

第三步 登录数据库

使用 psql -U postgres 这条语句登录数据库,不需要输入数据库密码,注意U是大写的。

root@05b3a3471f6f:/# psql -U postgres

第四步 查看数据库列表

postgres-# l
                                   List of databases
      Name      |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
----------------+----------+----------+------------+------------+-----------------------
 fabricexplorer | hppoc    | UTF8     | en_US.utf8 | en_US.utf8 | 
 postgres       | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0      | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
                |          |          |            |            | postgres=CTc/postgres
 template1      | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
                |          |          |            |            | postgres=CTc/postgres

第五步 进入fabricexplorer 数据库里面

postgres=# c fabricexplorer     #c表示选择数据库

fabricexplorer=# d         #d表示展示数据库中的表信息
                   List of relations
 Schema |           Name            |   Type   | Owner 
--------+---------------------------+----------+-------
 public | blocks                    | table    | hppoc
 public | blocks_id_seq             | sequence | hppoc
 public | chaincodes                | table    | hppoc
 public | chaincodes_id_seq         | sequence | hppoc
 public | channel                   | table    | hppoc
 public | channel_id_seq            | sequence | hppoc
 public | orderer                   | table    | hppoc
 public | orderer_id_seq            | sequence | hppoc
 public | peer                      | table    | hppoc
 public | peer_id_seq               | sequence | hppoc
 public | peer_ref_chaincode        | table    | hppoc
 public | peer_ref_chaincode_id_seq | sequence | hppoc
 public | peer_ref_channel          | table    | hppoc
 public | peer_ref_channel_id_seq   | sequence | hppoc
 public | transactions              | table    | hppoc
 public | transactions_id_seq       | sequence | hppoc
 public | users                     | table    | hppoc
 public | users_id_seq              | sequence | hppoc
 public | write_lock                | table    | hppoc
 public | write_lock_write_lock_seq | sequence | hppoc
(20 rows)

第六步 查询channel表信息

这个表有点宽大家可以复制到文本里面看

fabricexplorer=# select * from channel;
 id |    name     | blocks | trans |      createdt       |                       channel_genesis_hash                       | channel_hash | channel_config | channel_block | channel_tx | channel_version | network_name 
----+-------------+--------+-------+---------------------+------------------------------------------------------------------+--------------+----------------+---------------+------------+-----------------+--------------
  3 | fab2-chan1  |     24 |    24 | 2021-01-12 05:43:52 | 951658b50465610dcb655a520d41c7eae796a4c5ab5f46cd6356c7730769e988 |              |                |               |            |                 | tbs_default
  4 | testchannel |      2 |     2 | 2021-01-12 05:43:54 | 641f74e1cbc1e8fa274839d421987ffc578c504c28d891beeb3fa0d0c2b99637 |              |                |               |            |                 | tbs_default
  5 | c-zrpmx5    |      7 |     7 | 2021-01-14 02:41:21 | 9234dd1c82201d1737f92c3a3b0eda3df41002d2d8c9d2334fcdf0a612df4b39 |              |                |               |            |                 | tbs_default
  6 | c-3uaw9h    |      0 |     0 | 2021-01-14 03:20:57 | dd336656a8ec7c5ae785fa837e2fb13d422071051062c1f07dc27ab23c4b8a2c |              |                |               |            |                 | tbs_default
(4 rows)

第七步 删除报错的channe

fabricexplorer=# delete from channel where name = 'testchannel';
DELETE 1

最后使用docker-compose重启区块链浏览器和区块链浏览器DB,你会发现它起来了。

总结:

这个错误网上都搜不到,可能是使用Fabric的人少,然后部署区块链浏览器的人就更少了,因此在这里记录一下,这个问题是之前部署过区块链服务和浏览器,环境没有清理干净,把区块链浏览器的DB所在的卷删除,然后重新部署区块链浏览器也能解决此问题,删掉后就启动成功了。

原文地址:https://www.cnblogs.com/xwxz/p/14277840.html