代码之家  ›  专栏  ›  技术社区  ›  thichxai

marklogic 8-计划任务错误错误:无法原子化foty0013函数

  •  1
  • thichxai  · 技术社区  · 6 年前

    查询在Qconsole上成功工作。但是设置一个计划任务。它输出错误错误错误: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)
    )
    

    在计划任务spool out错误中: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"
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Mads Hansen    6 年前

    XDMP-ATOMIZEFUNC 在生成错误日志消息时可能发生,因为它尝试生成错误消息并序列化变量(即或包含函数)的内容。这个 $json:config 具有多个函数属性,它不能雾化 $JSON:CONFIG 在错误日志消息中打印出该变量的内容,正如您可以看到的那样 $dtfmt $sdate1 变量。

    Atomization

    原子化的结果要么是一系列原子值,要么是 type error [Err:FoTy012]。

    定义:序列的原子化定义为调用 fn:data 序列上的函数,如中所定义 [XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition)] .

    通过在Qconsole中执行此代码,可以观察到相同的错误:

    xquery version "1.0-ml";
    import module namespace json="http://marklogic.com/xdmp/json" at 
     "/MarkLogic/json/json.xqy";
    
    let $custom :=
      let $config := json:config("custom")
      let $_ := map:put($config,"whitespace","ignore")
      let $_ := map:put($config,"array-element-names","TR")
      return $config
    
    return $custom
    

    您没有提供足够的代码或错误消息来确定,但是 xdmp-雾化 不太可能是问题的根本原因。在错误日志中进一步查找异常的开始,以了解真正的错误是什么。它应该有模块和行号。

        2
  •  0
  •   DALDEI    6 年前

    很难说没有更多的信息像一个最小的重复完整的例子。 您可以尝试在Prolog中添加XQuery版本,以强制Qconsole代码和任务代码运行相同的XQuery版本,我相信默认值是不同的。