无法在_users DB中创建用户文档

时间:2018-07-21 14:50:32

标签: couchdb

我的生产设置中突然出现了意外错误(在_users DB中创建用户文档时)

{
    "error": "EXIT",
    "reason": "{{badmatch,[]},\n [{couch_query_servers,new_process,3},\n {couch_query_servers,lang_proc,3},\n {couch_query_servers,handle_call,3},\n {gen_server,handle_msg,5},\n {proc_lib,init_p_do_apply,3}]}"
}

这是我的文档结构,自最近2年以来运行良好

{"_id": "org.couchdb.user:name","name": "name","roles": [],"type": "user","password": "password"}

非常感谢您为解决问题提供的帮助

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。在我的 _users 表中,创建了一个设计文档 _design / X12635 。删除文档后,它开始正常工作。

{
   "_id": "_design/X12635",
   "_rev": "1-12bc5863e7f65bad6ddf51c1748c3e42",
   "language": "erlang",
   "validate_doc_update": "fun ({NewDoc}, OldDoc, UserCtx, SecObj)->\n\t%%Covers CVE-2017-12635\n\tRoles = proplists:lookup_all(<<\"roles\">>,NewDoc),\n\tcase length(Roles) < 2 of\n\t\ttrue -> ok;\n\t\tfalse ->throw({[{<<\"forbidden\">>, <<\"You can’t hack roles,sorry\">>}]})\n\tend,\n\t1\nend."
}

在收到@Flimzy评论后,我花了更多时间,找到了替代的解决方案。我再次恢复了上面的设计文档 _design / X12635 ,并在 CouchDB 1.6.1

中添加了以下配置。
Section : native_query_servers  
Option : erlang 
Value : {couch_native_process, start_link, []}

启用 erlang 可能会影响安全性,最好将 CouchDB 1.6.1 升级到最新版本