【问题标题】:MarkLogic upgrade incompatibility (downgrade)MarkLogic 升级不兼容(降级)
【发布时间】:2020-05-10 15:25:38
【问题描述】:

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

XDMP-NESTEDMULTI: xdmp:invoke-function(function() as item()*, query...) -- 无法在多语句事务中创建嵌套的多语句事务。

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

是否有正确的方法来降级 MarkLogic? 甚至解决上面的错误?

【问题讨论】:

  • 没有办法降级。您唯一的选择是建立一个新的 ML9.x 集群并使用 MLCP 之类的工具迁移您的文档。但似乎未来对 ML9 的更新可能会导致相同的错误,因此更好的选择可能是联系支持人员以帮助您解决该错误。
  • 与其尝试降级,不如专注于解决问题。如果您共享该 xdmp:invoke-function() 调用的代码,则有助于诊断和建议更改会更容易。
  • 我同意 Mads 的观点,前进更好。就像一般建议一样,请务必在升级之前进行备份,这样您就可以在新的 ML9 集群中恢复该备份,以备不时之需。

标签: marklogic marklogic-9 downgrade marklogic-10


【解决方案1】:

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

交易模式

[已弃用:改用updatecommit 选项。] 显式设置此上下文的事务模式。允许的值:auto(默认)、queryupdate-auto-commitupdate。有关详细信息,请参阅应用程序开发人员指南中的Transaction Mode

对于隐式提交的简单更新,指定事务模式update-auto-commit。更新的事务模式会创建一个新的多语句更新事务,并且需要在代码中显式提交。

在一个会话中,一次只能有一个活动的多语句事务。如果新的多语句事务被指定嵌套在多语句事务中,MarkLogic 会抛出异常 XDMP-NESTEDMULTI

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

原因

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

回应

改用事务模式update-auto-commit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多