我有一个奇怪的问题:我想访问不同数据库(相同的服务器)中的文档。我的方法与这里讨论的方法非常接近:http://www-10.lotus.com/ldd/nd85forum.nsf/DateAllFlatWeb/517ef6249d5b9fa6852575cc00503786?OpenDocument
我在源数据库中只有3个文档。两个是直接创建的,一个是从另一个数据库复制的(这些只是测试文档)。我们有一个通用的视图,它列出了视图中的条目,并以如下形式计算链接:
http://localhost/database.nsf/xpMBK.xsp?action=openDocument&db=dominotest%2Ftest%2Fulcbs%21%21projects%2FFKIE%2FEinsMuB.nsf&view=AMBKEinsAll&documentId=781F14A98A699548C1257C3200316BAC正如您所看到的,我们在当前数据库中使用了一个Xpage,并放置了指向Xpage的参数,这些参数指向源数据库(这里的符号是server!!database )、一个视图(这就是我想返回的那个视图)以及源文档的unid。
现在有一个奇怪的问题:我不能打开复制的文档,收到
NotesException: Invalid universal id
lotus.domino.local.Database.getDocumentByUNID(Unknown Source)错误。更好的是:如果我复制了一个在同一数据库(当前数据库)中工作的文档,这个文档也不能再打开了!这是什么,你能给我一个提示来解决这个问题吗?
提前感谢!
发布于 2014-02-05 23:55:33
如果您所说的“复制”是指手动复制并粘贴到目标数据库中,或者通过copyToDatabase()以编程方式复制,那么文档的新副本将被分配一个新的UNID;它不能保证具有与原始文档相同的UNID (而且,根据我的经验,它很少保留原始文档)。如果您正在以编程方式复制文档,请确保在之后检查其新的UNID,并在URL计算中使用该ID。
发布于 2014-02-06 05:36:29
我在过去遇到过一个非常类似的问题,答案是我没有打开我认为我正在打开的NSF文件。我使用的是NotesDatabase.OpenByReplicaID,服务器上有数据库的两个副本,包含不同的文档集。在这种情况下,Notes可以选择两个副本中的一个--您无法控制它。实际上打开的副本包含一些与我试图访问的and相对应的文档,但其中一些确实不在那里,因此getDocumentByUNID()方法抛出"Invalid universal id“错误是正确的。这真的真的很难调试。
在我弄清楚并从我的服务器上删除了第二个副本之后,我所做的第一件事(在测试和确认问题消失之后)是编写一个代理来扫描服务器以查找重复的副本I。
发布于 2014-02-06 15:55:30
通过copyToDatabase将数据库复制到数据库时,Domino数据库中的UNID:S如下所示。UNID的一部分来自数据库,另一部分是文档唯一。因此,如果您将一个文档从一个数据库复制到另一个数据库,那么每次该文档都可能获得相同的unid。如果唯一组合在数据库中没有包含该组合的有效文档,则该文档每次都将获得相同的UNID。在其他情况下,文档将获得新的Id。
欲了解更多信息,请访问UNID and copytodatabase
https://stackoverflow.com/questions/21580255
复制相似问题