MarkLogic 10-托管文档在dls上引发异常:document-checkout-update-checkin

时间:2019-07-25 16:53:15

标签: marklogic marklogic-9

我已经管理了名为123456.xml的文档,并且尝试使用如下的dls库函数对其进行更新,

declare variable $uri:= "/abc/123456_xml_versions/1-123456.xml";

dls:document-is-managed($uri),
dls:document-checkout-update-checkin($uri, $xml, 'Update', fn:true())

脚本片段上方抛出异常,

[1.0-ml] DLS-DOCUMENTVERSION:(err:FOER0000)无法更新或签出文档版本/abc/123456_xml_versions/1-123456.xml

这是应用程序的现有迁移操作,正在更新文档的所有版本。

3 个答案:

答案 0 :(得分:1)

不要从versions目录中提供DLS功能URI。这些URI由DLS管理。只要给它您要更新的文档的规范URI,DLS就会自动为您增加版本:

declare variable $uri:= "/abc/123456/123456.xml";
...

答案 1 :(得分:0)

dls:document-checkout-update-checkin($uri, , 'Update', fn:true())

第二个参数应该是您要替换现有文档的文档节点。

您可能还需要检查dls:document-checkout-status,以查看当前是否有其他用户签出了文档。

答案 2 :(得分:0)

我建议您在ML更新(从V8-到9+)后处理DLS文档之前,先学习,充分理解(或如果没有,请寻求支持)并执行此处的程序https://docs.marklogic.com/guide/relnotes/chap4#id_65479。 。 在您执行升级之前,DLS V9出厂时不包含与先前版本不兼容。升级不会自动执行,并且可能不会注意到(首先)未升级或部分升级的症状。 有关检查所有DLS文档状态的新功能的详细信息。即使在升级以验证所需的权限,属性和集合仍完好无损之后,这些功能也很有用。

然后,我鼓励您学习使用DLS文档的体系结构和过程。不支持这些过程之外的任何操作,并且非常棘手(这就是为什么不支持该操作的原因)。 请注意,您可能会发现进行批量检出,然后更新然后进行批量检入对您的用例而言效果更好,然后再进行一次文档检出-插入-检入。 还请注意记录的DLS的权限和索引要求。