2011-12-05 104 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中,這樣做的神奇。感謝一百萬。 –