2011-12-05 82 views
3

我试图将一个Plone站点从3.3.5升级到Plone 4.1.2。我安装了一个4.1.2的干净副本,并试图将Data.fs复制到4.1.2。我不得不删除我的成员文件夹,因为它是LargePloneFolder类型,不再受支持。在32位虚拟机上,这工作得很好。但是,我在64位虚拟机上遇到了错误。在32位机器上从Plone 3.3.5(同一台机器)复制Data.fs或从Plone 4.1.2复制Data.fs导致相同的错误。Plone升级3.3.5到Plone 4.1.2

堆栈跟踪:

[email protected]# bin/zeoserver fg 

/usr/local/Plone/zeocluster/parts/zeoserver/bin/runzeo 
Traceback (most recent call last): 

    File "/usr/local/Plone/buildout-cache/eggs/ZODB3-3.10.3-py2.6-linux-x86_64.egg/ZEO/runzeo.py", line 405, in <module> 
    main() 

    File "/usr/local/Plone/buildout-cache/eggs/ZODB3-3.10.3-py2.6-linux-x86_64.egg/ZEO/runzeo.py", line 402, in main 
    s.main() 

    File "/usr/local/Plone/buildout-cache/eggs/ZODB3-3.10.3-py2.6-linux-x86_64.egg/ZEO/runzeo.py", line 158, in main 
    self.open_storages() 

    File "/usr/local/Plone/buildout-cache/eggs/ZODB3-3.10.3-py2.6-linux-x86_64.egg/ZEO/runzeo.py", line 207, in open_storages 
    self.storages[opener.name] = opener.open() 

    File "/usr/local/Plone/buildout-cache/eggs/ZODB3-3.10.3-py2.6-linux-x86_64.egg/ZODB/config.py", line 177, in open 
    return FileStorage(config.path, **options) 

    File "/usr/local/Plone/buildout-cache/eggs/ZODB3-3.10.3-py2.6-linux-x86_64.egg/ZODB/FileStorage/FileStorage.py", line 185, in __init__ 
    read_only=read_only, 

    File "/usr/local/Plone/buildout-cache/eggs/ZODB3-3.10.3-py2.6-linux-x86_64.egg/ZODB/FileStorage/FileStorage.py", line 1554, in read_index 
    h = fmt._read_data_header(pos) 

    File "/usr/local/Plone/buildout-cache/eggs/ZODB3-3.10.3-py2.6-linux-x86_64.egg/ZODB/FileStorage/format.py", line 150, in _read_data_header 
    h = DataHeaderFromString(s) 

    File "/usr/local/Plone/buildout-cache/eggs/ZODB3-3.10.3-py2.6-linux-x86_64.egg/ZODB/FileStorage/format.py", line 236, in DataHeaderFromString 
    return DataHeader(*struct.unpack(DATA_HDR, s)) 

    File "/usr/local/Plone/buildout-cache/eggs/ZODB3-3.10.3-py2.6-linux-x86_64.egg/ZODB/FileStorage/format.py", line 246, in __init__ 

    "Non-zero version length. Versions aren't supported.") 
ValueError: Non-zero version length. Versions aren't supported. 

Python版本:2.6附带的Plone 4.1.2统一安装程序

我环顾了分贝为好。在Plone 3.3.5上使用fsrecover.py并使用图形界面。但这也没有帮助。这很奇怪,因为我的32位安装完全没有错误,Data.fs的迁移工作得很好。

我使用cp命令复制数据库,并使用-p选项保留所有权限,这在32位虚拟机上工作正常。

+1

如果你编辑的问题,包括你可能会得到一个更合适的答案:(一)全面追踪,(B)Python版本,尽在你的Python是如何构建的(系统封装(c)如何安装Plone(统一安装程序?),(d)您是如何复制ZODB的。注意:AFAICT,ZODB本身不应该具有63/32位问题的数据结构,但是Python的内置散列算法在64/32位平台上不一致 - 这可能会导致附加组件或其他未知的问题的问题。需要更多信息。 – sdupton

+0

感谢您指出。我现在更新了这篇文章。 –

回答

4

在尝试迁移之前,打包数据库和/或尝试在正在运行的Plone 3.3.x安装中的Zope2/Control_Panel中删除任何旧的“ZODB版本”。或者尝试执行整个Plone站点的ZEXP导出,并在尝试执行4.x迁移之前将其导入到干净的3.3.5安装中。新版本的ZODB不支持“版本”(长期运行的交易),并且至少在几年内不推荐使用。

看到这个线程: https://mail.zope.org/pipermail/zodb-dev/2010-September/013620.html

+1

ok,导出网站,然后导入到一个干净的3.3.5,然后将Data.fs复制到Plone 4.1.2的var/filestorage中,这样做的神奇。感谢一百万。 –