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

问题描述:

我收到以下错误消息。我在其他SO帖子中看到这一点(here)&我联系了SDL支持,但我仍然无法解决问题。有人可以提供简单的解决方案吗?我认为是导致这一步骤如下:尝试将二进制文件部署到已存储其他二进制文件的位置现有二进制文件

1)链接从&页面发布到PDF 1001
2)删除PDF 1001从CM
3)上传PDF 1002同样将其删除名称为1001.
4)现在,如果您尝试&发布,您将收到错误消息。

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

ERROR: Phase: Deployment Prepare Commit Phase failed, Unable to prepare transaction: tcm:0-11111-66560, Attempting to deploy a binary 1002 to a location where a different binary is already stored Existing binary: 1001:, Attempting to deploy a binary 1002 to a location where a different binary is already stored Existing binary: 1001:, Unable to prepare transaction: tcm:0-13573-66560, Attempting to deploy a binary 1002 to a location where a different binary is already stored Existing binary: 1001:, Attempting to deploy a binary 1002 to a location where a different binary is already stored Existing binary: 1001:

所以文件从CM删除,但CD还是有它的一个引用(根据CD仍然存在,并且仍然使用的东西)。

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

[编辑]对不起,现在只读,你说你没有发表一切。显然不是,因为仍然有一个参考......打开一个虚拟机,将返回更新。

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

  • 添加二进制文件页面,发布补充
    • 参考在CD “REFERENCE_ENTRIES” 表
  • 取下页二进制,发布
    • 参考删除从 “REFERENCE_ENTRIES” 表中,二进制删除
  • 取消发布页面(重新添加二进制后,重新发布)
    • 借鉴 “REFERENCE_ENTRIES” 表中删除,二进制删除

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

+0

一切都被发布到文件系统。我看到数据文件夹有一些对1001的引用。也许就是这样?我之前说过,我没有发布任何东西,但也许我需要取消发布所有东西,清空Data文件夹中的残余文件,然后重新发布 – 2013-02-13 19:20:27

+0

如果删除数据文件夹是您的一个选项,那么是的,去吧:) – 2013-02-13 19:24:03

+0

这是只是我们的测试服务器...所以这是现在的选择。我想我们需要确切地知道为什么会发生这种情况,并确保它不会发生在产品 – 2013-02-13 19:26:15

此错误通常是由于缺省情况下,Tridion使用上传二进制文件的原始文件名作为Content Delivery端的文件名。如果您未指定要部署的独立结构组,则如果您有两个具有相同原始上载文件名的多媒体组件,则Tridion会尝试将它们部署到内容交付的相同位置。幸运的是,Content Delivery库足够智能,可以检测到潜在的覆盖,相反,您会收到此错误。

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

解决方法是确保文件名在您要部署到的结构组中是唯一的。关于如何做到这一点,您有很多选择,但常用的方法是在调用AddBinary()时将组件ID引入文件名。

+0

作者方面立即修复错误的方法是重命名为新文件上传的文件名。否则,另一种编程方法是使用文件夹路径而不是默认的“图像”位置来减少重复的机会。 – 2013-02-14 02:53:42

+0

...当您要求课程上传示例图片时,这在培训中也很常见。 :-) – 2013-02-14 02:55:48

+1

在部署程序配置文件中至少应该有这种行为的覆盖设置。我会说很长一段时间,同名的二进制文件是相同的二进制文件,我认为这很容易向用户解释。就我而言,我担心的是Tridion似乎已经失去了它发布的内容的轨道。请记住我的场景,由于从CM中删除的二进制文件,我收到了此错误。 – 2013-02-14 12:25:20

我们几乎每次安装都会遇到这种故障安全问题。当然,在开发和测试环境中它更常见,故障安全也可能发生在其他情况下。事实上,如果您尝试发布已经存在的图像(图像被替换为“破碎的图像”图标),它可以有效地打破整个网站。不知道这是如何工作,但它可以。

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

此页可能帮助你开始:在这种情况下 Unique Binary filenames