尝试将二进制文件部署到已存储其他二进制文件的位置现有二进制文件

时间:2013-02-13 15:15:15

标签: tridion tridion-2011 tridion-content-delivery

我收到以下错误。我在其他SO帖子中提到了这一点(here)&我联系了SDL支持,但我仍然无法解决问题。有人可以提供简单的解决方案吗?我认为导致这一步骤的步骤如下:

1)发布包含PDF 1001链接的页面  2)从页面&中删除PDF 1001从CM中删除它  3)上传与1001同名的PDF 1002  4)现在,如果你尝试&发布你会得到错误。

所以我需要取消发布PDF 1001,但它已从CM中删除。我该如何解决这个问题? SDL支持建议修复涉及编辑发布事务期间生成的ZIP文件。但是,我甚至取消发布了该出版物的所有页面。证实他们已经离开了。错误仍然存​​在......

  

错误:阶段:部署准备提交阶段失败,无法准备事务:tcm:0-11111-66560,尝试将二进制1002部署到已存储其他二进制文件的位置binary:1001:,尝试将二进制1002部署到已存储不同二进制文件的位置现有二进制文件:1001:,无法准备事务:tcm:0-13573-66560,尝试将二进制1002部署到其中已存储不同的二进制文件现有二进制文件:1001:,尝试将二进制文件1002部署到已存储其他二进制文件的位置现有二进制文件:1001:

3 个答案:

答案 0 :(得分:8)

所以该文件已从CM中删除,但CD仍然有一个引用(根据CD,它仍然存在,仍然被某些东西使用)。

您应该在删除1001之后发布页面,但之前添加1002.这应该从CD数据库中删除引用。然后你应该可以添加1002并再次发布页面。

[编辑]抱歉,现在只读你说你未发布的一切。显然不是,因为仍然有一个参考...打开一个VM,将返回更新。

[EDIT2] 如果你取消发布,仍然不明白它是如何仍然是一个冲突,但这是我在我的服务器上观察到的:

  • 将二进制文件添加到页面,发布
    • 参考添加到CD中的“REFERENCE_ENTRIES”表
  • 从页面中删除二进制文件,发布
    • 从“REFERENCE_ENTRIES”表中删除了参考,已删除二进制文件
  • 取消发布页面(重新添加二进制文件后,重新发布)
    • 从“REFERENCE_ENTRIES”表中删除了参考,已删除二进制文件

所以,就我而言,我看到了我的期望。删除二进制文件后尝试发布页面,如果可能的话,请检查REFERENCE_ENTRIES表中的内容。

答案 1 :(得分:2)

此错误通常是由以下事实引起的:默认情况下,Tridion使用已上载二进制文件的原始文件名作为其在Content Delivery端的文件名。如果您没有指定要部署的不同结构组,那么如果您有两个具有相同原始上载文件名的多媒体组件,Tridion将尝试将它们部署到内容交付的同一位置。幸运的是,Content Delivery库非常智能,可以检测到潜在的重写,相反,您会收到此错误。

首先 - 在测试情况下,这种情况更有可能发生。例如,您需要创建一组测试MMC,因此您可以复制并粘贴一些已有的测试MMC。猜猜看 - 他们的上传文件名是一样的。

解决方案是确保文件名在您部署到的结构组中是唯一的。您有很多选择如何执行此操作,但常见的方法是在调用AddBinary()时将组件ID引入文件名。

答案 2 :(得分:0)

我们几乎每次安装都遇到这种故障保护。虽然肯定,它在开发和测试环境中更常见,但故障保护也可能在其他情况下发生。实际上,如果您尝试发布已经存在的图像(图像被“臭名昭着的图像”图标替换),它可以有效地破坏整个网站。不确定它是如何工作的,但它可以。

为了确保上传的二进制文件是唯一的,我建议编写一个TBB来检查所有二进制文件,并将tcm uri添加到文件名中。在每个页面模板上添加此项以确保不会发生这种情况。越早执行此操作,错误发生的可能性就越小。请记住,这可能意味着上传将始终发布新的二进制文件,如果您将tbb添加到COMPONENT模板,页面往往会发生冲突。但是,它将为您免除向不理解(或更好地接受)故障安全的编辑解释工作流程的麻烦。

此页面可能会帮助您入门: Unique Binary filenames