首页 > 解决方案 > 无法在 _users DB 中创建用户文档

问题描述

我在生产设置中突然出现意外错误(在 _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"}

非常感谢您帮助解决我的问题

标签: couchdb

解决方案


我得到了解决方案。在我的_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升级到最新版本


推荐阅读