如何解决MarkLogic数据库无法保存.eps文件报XDMP-JSONDOC错误问题?
问题分析与解决方案
差异原因
- MarkLogic的MIME类型配置存在内存缓存与持久化配置不同步的情况:管理页面显示的是存储在数据库中的持久化配置,而
xdmp.mimetypes()读取的是节点内存中的缓存配置。如果该实例修改MIME类型后未重启节点,或者配置同步过程中出现异常,就会导致内存缓存没有加载最新的持久化设置,出现两者不一致的现象。 - 也可能是该实例曾通过
xdmp:add-mimetype()或xdmp:remove-mimetype()这类XQuery函数临时修改过MIME类型——这类修改仅保存在内存中,不会同步到管理页面的持久化配置,若未重启节点,就会出现显示与实际生效配置不符的情况。
解决步骤
重启目标节点
直接重启出现问题的MarkLogic实例节点,让内存缓存重新加载持久化的MIME配置。重启后调用xdmp.mimetypes()检查application/postscript的格式是否变为binary。手动修正MIME配置(重启无效时)
执行以下XQuery代码强制更新MIME类型:xdmp:add-mimetype("application/postscript", "binary", ".eps")执行完成后再次调用
xdmp.mimetypes()确认配置正确,同时检查管理页面的对应设置是否同步更新。集群环境需检查配置同步
如果该实例属于MarkLogic集群,确认集群内的配置同步机制是否正常,对比其他节点的MIME配置,确保没有因同步异常导致的配置差异。验证修复效果
重新通过REST API上传.eps文件,确认XDMP-JSONDOC错误是否消除,文件能否正常存入数据库。
内容的提问来源于stack exchange,提问作者brztss
相关产品推荐
相关产品推荐

