MarkLogi c обновление несовместимости (понижение) - PullRequest
1 голос
/ 24 января 2020

Я недавно обновил наш MarkLogi c 9.xx до 10.xx (последняя версия). Мы столкнулись с этой ошибкой:

XDMP-NESTEDMULTI: xdmp: invoke-function (function () as item () *, query ...) - Невозможно создать вложенную транзакцию с несколькими операторами внутри транзакция с несколькими утверждениями.

Теперь наш способ решить эту проблему - вернуться к версии 9.xx до появления ошибки.

Существует ли правильный способ понижения рейтинга MarkLogi c? или хотя бы устранить ошибку выше?

1 Ответ

3 голосов
/ 25 января 2020

Вам нужно будет проверить код, который вызывает эту ошибку. Найдите все функции eval, invoke или spawn и посмотрите, какие опции установили для транзакции значение update.

транзакции

[УСТАРЕЛО: Вместо этого используйте опции update и commit.] Явно установите режим транзакции для этого контекста. Допустимые значения: auto (по умолчанию), query, update-auto-commit, update. Подробнее см. Режим транзакции в Руководстве разработчика приложений.

Чтобы неявно фиксировать простые обновления, укажите режим транзакции update-auto-commit. Режим обновления транзакции создает новую транзакцию обновления с несколькими операторами и требует явной фиксации в коде.

В сеансе может быть только одна активная транзакция с несколькими операторами за один раз. Если указана новая транзакция с несколькими выписками, вложенная в транзакцию с несколькими выписками, MarkLogi c выдает исключение XDMP-NESTEDMULTI .

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

Причина

Попытка eval или вызова с режимом транзакции update в транзакции с несколькими выписками.

Ответ

Вместо этого используйте режим транзакции update-auto-commit.

...