You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyperledger Fabric测试网络切换LevelDB至CouchDB失败求助

解决Hyperledger Fabric Test-Network切换CouchDB失败的问题

看起来你踩了test-network启动脚本的一个常见坑——直接修改配置文件不会生效,因为启动脚本network.sh默认使用LevelDB,需要显式指定参数来启用CouchDB。我帮你梳理下问题原因和解决步骤:

问题根源

你修改了core.yaml和docker-compose-couch.yaml,但启动日志里明确显示"using database 'leveldb'",而且没有CouchDB容器,这是因为:

  • network.sh脚本默认加载的是不带CouchDB的docker-compose.yaml,不会自动读取你修改的docker-compose-couch.yaml
  • 脚本启动peer节点时,会通过环境变量覆盖core.yaml里的配置,你直接修改core.yaml的设置会被脚本的默认参数覆盖

快速解决步骤

1. 彻底清理现有网络

先把之前的容器、数据卷、残留配置全部清理干净,避免旧环境干扰:

./network.sh down

2. 带CouchDB参数启动网络

启动时必须加上-s couchdb参数,这样脚本才会加载docker-compose-couch.yaml并启用CouchDB:

./network.sh up -s couchdb

如果需要一次性完成网络启动、通道创建和链码部署,可以执行:

./network.sh up createChannel -s couchdb

3. 验证是否生效

执行启动命令后,用以下命令确认CouchDB容器已启动:

docker ps

你应该能看到couchdb0和couchdb1两个容器。同时查看peer节点日志,确认数据库类型已切换为CouchDB:

docker logs peer0.org1.example.com | grep "stateDatabase"

补充说明

你修改的docker-compose-couch.yaml和core.yaml配置本身是正确的,但test-network的启动脚本设计为通过命令行参数控制数据库类型,而非直接读取本地修改的配置文件。脚本会根据-s参数的值,自动设置对应的环境变量(比如你在docker-compose-couch.yaml中定义的CORE_LEDGER_STATE_STATEDATABASE=CouchDB),并加载对应的docker-compose配置文件。

内容的提问来源于stack exchange,提问作者JonasLevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:29:48