【发布时间】:2022-02-01 07:05:49
【问题描述】:
我为我的 ML 内容数据库中存在的文档创建了模板没有 <invalid-values>ignore</invalid-values>。因此,当文档的创建/更新过程中存在无效行值时,我的代码会引发 TDE-INDEX 错误。
TDE-INDEX: xdmp:eval("xquery 版本 "1.0-ml"; import module namesp...", (), ****...) -- 将模板 /template.xml 应用到文档 /workid.xml 时出错:TDE-EVALFAILED: Eval for Column subject_name='$subject[@code eq $subject_code]/text()' 返回多个值(预期只有一个)
现在我有一个需求,我需要在 ErrorLog.txt 文件中跟踪此错误并继续插入文档。
从有关 TDE 的 Marklogic 文档中,我可以看到这可以通过两种方式处理。
-
设置
<invalid-values>ignore</invalid-values>,我们无法记录错误,它会继续操作 -
如果没有该选项,则会抛出错误并停止处理。
现在有两个问题我正在寻找答案:
-
是否可以使用 try/catch 表达式捕获 TDE 错误?
-
是否可以记录 TDE 错误并允许文档插入/更新操作?
【问题讨论】:
-
如果您要捕获异常,您是否希望能够捕获 TDE 异常以跳过 TDE 处理,但仍保存文档?对于您的特定问题,如果看起来好像它需要一个列的单个值并且您有多个值,因此您可以应用不同的 TDE 并为该列生成多行,只选择一个值而不是所有匹配的值,或连接它们并产生一个字符串。
-
@MadsHansen 我们最终决定修改现有模板以获取一个值而不是所有匹配项,因为我们不想丢失报告中的数据并允许保存记录。
标签: xml xquery marklogic marklogic-10