我试图将一个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位虚拟机上工作正常。
如果你编辑的问题,包括你可能会得到一个更合适的答案:(一)全面追踪,(B)Python版本,尽在你的Python是如何构建的(系统封装(c)如何安装Plone(统一安装程序?),(d)您是如何复制ZODB的。注意:AFAICT,ZODB本身不应该具有63/32位问题的数据结构,但是Python的内置散列算法在64/32位平台上不一致 - 这可能会导致附加组件或其他未知的问题的问题。需要更多信息。 – sdupton
感谢您指出。我现在更新了这篇文章。 –