ZMI目录清除和重建失败,出现“POSKeyError:'无blob文件'”

时间:2011-08-26 09:26:28

标签: plone

我们有一个站点从plone 3迁移到plone 4.0.5。从acl_users中删除用户后,我发现acl_users和portal_membership之间存在差异(另一个问题),并且在没有运气研究(作为最后的手段)后尝试清除并重建目录。

POSKeyError失败:'没有blob文件'(下面的回溯)。我们不会在应用程序中使用Blob存储,因为它诞生于Plone 3.研究问题导致http://dev.plone.org/plone/ticket/11999?version=0处的未答复票证以及http://plone.org/products/plone.app.blob/issues/10处的死胡同评论。

任何人都可以解决这个问题。我是否必须设置虚拟blob存储器?

谢谢,

戈德

Traceback (innermost last):
  Module ZPublisher.Publish, line 127, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 47, in call_object
  Module Products.CMFPlone.CatalogTool, line 356, in manage_catalogRebuild
  Module Products.CMFPlone.CatalogTool, line 346, in clearFindAndRebuild
  Module OFS.FindSupport, line 244, in ZopeFindAndApply
  Module OFS.FindSupport, line 244, in ZopeFindAndApply
  Module OFS.FindSupport, line 232, in ZopeFindAndApply
  Module Products.CMFPlone.CatalogTool, line 339, in indexObject
  Module Products.Archetypes.CatalogMultiplex, line 38, in indexObject
  Module Products.CMFPlone.CatalogTool, line 287, in catalog_object
  Module Products.ZCatalog.ZCatalog, line 521, in catalog_object
  Module Products.ZCatalog.Catalog, line 339, in catalogObject
  Module Products.ZCatalog.Catalog, line 278, in updateMetadata
  Module Products.ZCatalog.Catalog, line 416, in recordify
  Module plone.indexer.wrapper, line 59, in __getattr__
  Module plone.indexer.delegate, line 16, in __call__
  Module Products.CMFPlone.CatalogTool, line 135, in getObjSize
  Module Products.ATContentTypes.content.base, line 197, in get_size
  Module plone.app.blob.field, line 273, in get_size
  Module plone.app.blob.field, line 85, in get_size
  Module plone.app.blob.utils, line 52, in openBlob
  Module ZODB.Connection, line 838, in setstate
  Module ZODB.Connection, line 914, in _setstate
  Module ZEO.ClientStorage, line 991, in loadBlob 
POSKeyError: 'No blob file'

3 个答案:

答案 0 :(得分:3)

这通常意味着您移动了网站:

  • VAR / filestorage / Data.fs

但不是:

  • VAR / blobstorage

到一个新的位置。恢复 var / blobstorage (具有相应的文件系统权限,以便ZEO可以读取它)应该可以解决问题。

答案 1 :(得分:1)

正如另一个回答所提到的那样, 使用BLOB,因为在Plone 4中我们默认迁移到BLOB以获取文件和图像。

我怀疑在迁移之后,无论什么对象导致您出现此问题,迁移之前可能会处于某种程度上的破坏状态。尝试恢复Plone 3备份并在那里运行清除并重建以查看是否从中获取任何信息。还尝试使用PDBDebugMode post_mortem debugging在Plone 4下找到有问题的对象,然后在运行clear和rebuild之前删除它们。

答案 2 :(得分:1)

我必须这样做,将var / blobstorage复制到新位置并将所有者和组更改为plone,使用chown -R和chgrp -R。