CouchDB为何查找_users数据库?对应日志报错该如何解决?
报错含义
你遇到的报错是CouchDB的标准系统库缺失提示:
_users是CouchDB的内置核心系统数据库,默认用于存储所有平台用户的账号信息、权限配置数据,CouchDB的认证缓存模块默认会持续监听该库的变更,实现用户登录态的实时更新- 报错栈里的
database_does_not_exist明确指向_users库不存在,导致集群分片模块mem3加载分片失败,最终认证缓存的变更监听进程异常退出 - 这类报错不会影响CouchDB的基础读写能力,但会导致内置用户认证功能完全失效,同时会持续占用系统资源重复生成报错日志。
解决方案
你可以根据自己的使用场景选择对应的处理方式:
- 如果你需要使用CouchDB的内置用户认证功能:直接手动创建
_users库即可,以管理员身份执行如下请求:
创建完成后CouchDB会自动初始化对应系统设计文档,报错会立即停止。curl -X PUT http://<管理员账号>:<管理员密码>@<CouchDB节点地址>:5984/_users - 如果你完全不使用CouchDB内置认证,已经对接了外部鉴权体系:可以修改配置禁用
_users库的监听逻辑,打开CouchDB配置文件local.ini,在[chttpd_auth_cache]配置段下添加如下配置:
保存后重启所有CouchDB节点即可。enabled = false - 如果你是刚完成集群部署还没做系统初始化:直接完成CouchDB集群初始化流程即可,初始化过程中系统会自动创建
_users、_replicator、_global_changes三个默认系统库,无需手动操作。
内容的提问来源于stack exchange,提问作者Rahib Rasheed
相关产品推荐
相关产品推荐

