如何为CouchDB单个数据库设置附件大小限制?含复制场景验证
没问题,我来给你梳理清楚CouchDB附件大小限制的设置方法,以及复制场景下的生效情况:
为videosdb数据库设置附件大小限制
你有两种配置方式可选,分别对应全局生效和仅针对videosdb生效:
全局配置(所有数据库通用)
找到CouchDB的配置文件(通常是local.ini,也可以通过Fauxton界面或HTTP API修改),定位到[attachments]段落,添加或修改max_file_size参数,单位为字节。比如要限制最大100MB的附件,就设置:[attachments] max_file_size = 104857600修改完成后需要重启CouchDB才能生效。
单数据库配置(仅videosdb生效)
如果不想影响其他数据库,可以直接针对videosdb单独配置,无需重启CouchDB。发送以下HTTP请求即可:PUT /videosdb/_config/attachments/max_file_size HTTP/1.1 Content-Type: application/json {"value": "104857600"}这里的
104857600同样代表100MB,你可以根据需求调整数值。
复制时的multipart请求是否受该限制影响
答案是肯定会生效。
你给出的这种带new_edits=false的multipart请求,是CouchDB复制过程中常见的文档同步请求。当复制操作向目标数据库推送包含附件的文档时,目标数据库会自动校验附件大小:如果附件超过了目标库设置的max_file_size,复制请求会直接失败,返回413 Request Entity Too Large错误。
需要注意的是,这个限制是作用在目标数据库上的——源数据库里的大附件可以正常存储,但复制到设置了大小限制的目标库时,就会被拦截。如果你的复制任务因为大小限制失败,要么调整目标库的max_file_size参数,要么先清理源库中的超大附件再重试。
内容的提问来源于stack exchange,提问作者user3769778
相关产品推荐
相关产品推荐

