我最近将MarkLogic 9.x.x升级到了10.x.x(最新版本)。 我们遇到此错误:
XDMP-NESTEDMULTI:xdmp:invoke-function(function()as item()*,query ...)-无法在多语句事务内创建嵌套的多语句事务。
现在,解决此问题的方法是在错误出现之前将版本降级到9.x.x。
是否有正确的方式降级MarkLogic? 甚至解决以上错误?
答案 0 :(得分:3)
您将需要检查导致此错误的代码。寻找任何eval,invoke或spawn函数,并查看哪些选项将事务模式设置为update
。
交易模式
[不推荐使用:请改为使用
update
和commit
选项。]为此上下文显式设置事务模式。允许的值:auto
(默认),query
,update-auto-commit
,update
。有关详细信息,请参见《应用程序开发人员指南》中的Transaction Mode。要隐式提交简单更新,请指定事务模式
update-auto-commit
。更新的事务处理模式会创建一个新的多语句更新事务,并且需要在代码中进行显式提交。在一个会话中,一次只能有一个活动的多语句事务。如果指定新的多语句事务嵌套在多语句事务中,则MarkLogic会引发异常 XDMP-NESTEDMULTI 。
https://docs.marklogic.com/8.0/messages/XDMP-en/XDMP-NESTEDMULTI
原因
在多语句事务中尝试使用事务模式update
进行评估或调用。
回复
改为使用事务处理模式update-auto-commit
。