查询已成功在qconsole上运行。但是设置计划任务。它会滤除错误err:FOTY0013功能无法被雾化...
import module namespace json="http://marklogic.com/xdmp/json" at
"/MarkLogic/json/json.xqy";
xdmp:set-request-time-limit(3600),
let $custom :=
let $config := json:config("custom")
let $_ := map:put($config,"whitespace","ignore")
let $_ := map:put($config,"array-element-names","TR")
return $config
let $res := cts:uris(..code..)
for $uri in $res
(..code..)
let $_ := if(xdmp:filesystem-file-exists($dirPath))
then ()
else xdmp:filesystem-directory-create(
$dirPath,
<options xmlns="xdmp:filesystem-directory-create">
<create-parents>true</create-parents>
</options>
)
let $_ := xdmp:save(
fn:concat($dirPath,$accStr,".json"),
json:transform-to-json(fn:doc($uri),$custom)
)
在计划任务假脱机错误err:FOTY0013功能不能被雾化...
2019-01-03 13:52:00.180 Notice: TaskServer: $custom = map:map(<map:map
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" .../>...XDMP-ATOMIZEFUNC:
(err:FOTY0013) Functions cannot be atomized...)
2019-01-03 13:52:00.180 Notice: TaskServer: $dtfmt = "20190103"
2019-01-03 13:52:00.180 Notice: TaskServer: $sdate1 = "2018-12-
27T13:52:00.175667-05:00"
答案 0 :(得分:0)
很难说出没有更多信息,例如最小的可复制完整示例。 您可以尝试在序言中添加XQuery版本,以强制您的QCOnsole代码和任务代码运行相同的xquery版本,我相信默认值是不同的。
答案 1 :(得分:0)
XDMP-ATOMIZEFUNC可能会在生成错误日志消息时发生,因为它试图生成错误消息并序列化变量(即包含函数)的内容。 $json:config
具有几个作为函数的属性,它不能原子化$json:config
以在错误日志消息中打印出该变量的内容,就像您看到的那样,{ {1}}和$dtfmt
变量。
雾化的结果是原子值序列或type error [err:FOTY0012]。
定义:序列的原子化定义为在序列上调用[XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition)]中定义的
$sdate1
函数的结果。
通过在QConsole中执行以下代码,您可以观察到相同的错误:
fn:data
您没有提供足够的代码或错误消息来肯定地说,但是 XDMP-ATOMIZEFUNC 可能不是问题的根本原因。在错误日志中进一步查找异常的开始,以查看真正的错误是什么。它应该具有模块和行号。