升级到Plone 4.3后出现PicklingError

升级到Plone 4.3后出现PicklingError,plone,upgrade,zodb,kss,Plone,Upgrade,Zodb,Kss,带有Plone 4.2.5的站点升级为Plone 4.3.4 签出对象时,将显示以下错误: 2015-04-22T01:18:16错误Zope.SiteErrorLog 1429676296.560.86437176197http://localhost:8181/Plone/capa/@@内容签出 回溯(最里面的最后一个): 发布中模块ZPublisher.Publish,第146行 提交中的模块Zope2.App.startup,第301行 模块事务。\u管理器,第89行,提交 模块事务。\

带有Plone 4.2.5的站点升级为Plone 4.3.4

签出对象时,将显示以下错误:

2015-04-22T01:18:16错误Zope.SiteErrorLog 1429676296.560.86437176197http://localhost:8181/Plone/capa/@@内容签出
回溯(最里面的最后一个):
发布中模块ZPublisher.Publish,第146行
提交中的模块Zope2.App.startup,第301行
模块事务。\u管理器,第89行,提交
模块事务。\提交中的事务,第329行
模块事务._事务,第443行,在_committersources中
提交中的模块ZODB.Connection,第559行
保存点中的模块ZODB.Connection,第1123行
模块ZODB.Connection,第623行,输入提交
模块ZODB.连接,第658行,存储对象中
模块ZODB.serialize,第422行,在serialize中
模块ZODB.serialize,第431行,在_dump中
PicklingError:无法pickle:导入模块plone.app.kss.interfaces失败
目录中没有对象提供
plone.app.kss.interfaces.IPortalObject


有什么想法吗?

在进行迁移之前,您应该始终阅读Plone升级指南:

plone.app.kss不再随plone 4.3.x一起提供。您必须将其重新添加到buildout.cfg:

eggs =
    ...
    plone.app.kss

不过,我建议您在升级后清理ZODB。否则,由于plone.app.kss未维护,您将遇到问题。

我认为您现在必须在构建中明确列出kss。我会在工作时查找包名,可能是
plone.app.kss
;)在我的迁移测试实例中,我有一个显式的
eggs+=kss.core
,我想我不会无缘无故地把它放在那里。也许会有帮助?谢谢你,乌尔里希;这实际上是一个解决方法,但我想清理ZODB以避免它。讨厌的问题。讨厌缺少接口。Matthew wilkes编写了一个聪明的插件,能够为丢失的类提供类存根——现在忘记了名称。我知道KSS不再与Plone 4.3一起提供,我知道Plone 4.3有升级步骤将其从ZODB中删除;我不明白的是为什么我会有这个意外的错误。这是虫子吗?升级后如何清理ZODB?此界面在上被列入黑名单。您是否尝试查看Plone 4.3升级步骤如何处理此问题?可能是升级步骤中忘记了plone.app.iterate。我认为这很可能是一个bug。只是猜测一下,但在4.2.x和4.3.x之间有一个已知的问题,其中zc.relation的目录会因为存储接口名而导致问题,我不确定是否有升级步骤。例如,谢谢你,阿斯科;我不知道这是否与那个问题有关,但似乎与我在同一次迁移中遇到的另一个问题有关。