我们有一个站点从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'
答案 0 :(得分:3)
这通常意味着您移动了网站:
但不是:
到一个新的位置。恢复 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。