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