MarkLogic 升级不兼容(降级)

MarkLogic upgrade incompatibility (downgrade)

我最近将我们的 MarkLogic 9.x.x 升级到了 10.x.x(最新版本)。 我们遇到了这个错误:

XDMP-NESTEDMULTI: xdmp:invoke-function(function() as item()*, query...) -- Cannot create a nested multi-statement transaction inside a multi-statement transaction.

现在我们解决这个问题的方法是降级回 9.x.x 我们在错误出现之前的版本。

有没有正确的降级MarkLogic的方法? 甚至解决上述错误?

您需要检查导致此错误的代码。查找任何 eval、invoke 或 spawn 函数,并查看哪些选项已将 transaction-mode 设置为 update.

交易模式

[DEPRECATED: Use the update and commit options instead.] Explicitly set the transaction mode for this context. Allowed values: auto (default), query, update-auto-commit, update. For details, see Transaction Mode in the Application Developer's Guide.

For simple updates to be implicitly committed, specify a transaction mode of update-auto-commit. A transaction mode of update creates a new multi-statement update transaction and requires an explicit commit in the code.

Within a session there can be only one active multi-statement transaction at a time. If a new multi-statement transaction is specified nested inside a multi-statement transaction, MarkLogic throws the exception XDMP-NESTEDMULTI.

https://docs.marklogic.com/8.0/messages/XDMP-en/XDMP-NESTEDMULTI

原因

在多语句事务中尝试使用事务模式 update 进行评估或调用。

回应

改用事务模式update-auto-commit