我正在尝试从数据库中删除文档,但出现以下错误-
XDMP-DBDUPURI: xdmp:document-delete("/test/abc.xml") -- URI
/test/abc.xml found in forests forest-1 and forest-2
当我尝试使用下面的代码来解决它时-
xquery version "1.0-ml";
let $doc := "/test/abc.xml"
let $forest-name := "forest-1"
let $query :=
'xquery version "1.0-ml";
declare variable $URI as xs:string external;
xdmp:document-delete($URI)'
let $options := <options xmlns="xdmp:eval"><database>{xdmp:forest($forest-name)}</database></options>
return xdmp:eval($query,(xs:QName("URI"),$doc),$options)
我收到如下错误-
XDMP-MULTIDBSTMT: xdmp:invoke("/MarkLogic/cpf/actions/failure-action.xqy",
(xs:QName("trgr:uri"), "/test/abc.xml", xs:QName("trgr:trigger"), ...),
<options xmlns="xdmp:eval"><isolation>same-statement</isolation><prevent-
deadlocks>...</prevent-deadlocks>...</options>) -- Cannot process different-
database requests with same-statement isolation
是否有解决此问题的建议?
答案 0 :(得分:4)
在某些情况下,xdmp:eval
可以默认为isolation
same-transaction
,尽管似乎没有记录在案。您需要将different-transaction
明确指定为isolation
选项。例如:
<options xmlns="xdmp:eval">
<isolation>different-transaction</isolation>
<database>{xdmp:forest($forest-name)}</database>
</options>
HTH!