marklogic - MarkLogic如何在指定林中插入文档
问题描述
我的数据库中有重复的 URI。我想通过在我的test-dup
数据库的不同林中使用相同的 URI 复制问题来进行测试,但它会排除错误。看起来我无法在森林中分配 URI。
1.0-ml] XDMP-PLACEKEYSLOCKING:xdmp:document-insert("/xquery/catalog.xml", 557........., (), (), 0, (xs:unsignedLong("13222250964842568399" ), xs:unsignedLong("15490631252765310070"))) -- 快速锁定不能与位置键一起使用。
xquery version "1.0-ml";
let $XML:=<catalog>
<product dept="WMN">
<number>557</number>
<name language="en">Fleece Pullover</name>
<colorChoices>navy black</colorChoices>
</product>
let $filename:= "/xquery/catalog.xml"
return
xdmp:document-insert($filename,$XML,(),(),0,xdmp:database-forests(xdmp:database("test-dup")) )
解决方案
您的数据库时间戳是否设置为“快速”?
为了通过显式指定林键将文档加载到林中,该林必须存在并附加到您要加载到的数据库中。尝试将文档加载到不属于上下文数据库的林中将引发异常。此外,必须在数据库配置上将锁定参数设置为严格,否则将引发 XDMP-PLACEKEYSLOCKING 异常。
如果您将其更改为strict
then 您将看不到错误,但仍然不会重复。
复制重复文档问题的一种简单方法是:
- 确保禁用再平衡器
- 分离其中一个test-dup森林(即 test-dup1)
- 插入您的文档
- 分离它插入的森林(即test-dup2)
- 重新附加 test-dup1 森林
- 再次插入文档
- 附加 test-dup1 和 test-dup2 森林
您现在将拥有相同 URI 的重复文档,因为它将同时存在于 test-dup1 和 test-dup2 森林中。
推荐阅读
- java - RxJava2 中的条件过滤器
- python - 如何通过使用带有多个客户端的 Flask-RESTful 在 Python 中写入文件来实现长轮询?
- mongodb - 使用 docker exec 将本地文件导入 docker 容器时“没有这样的文件或目录”
- android - 我在 android studio 中导入了一个项目,但所有标签都给出错误消息
- python - Selenium 与 PC 上传窗口交互?
- reactjs - 在 html Canvas 上获取虚线
- html - 使particle.js 成为背景
- java - POST API 怎么可能在 Postman 中工作而不是改造?
- html - 为 Antd Cascader 添加前缀图标
- python-3.x - 有没有办法断言已在 unittest 模拟对象上设置了属性?