Обновление Plone 3.3.5 до Plone 4.1.2 - PullRequest
3 голосов
/ 05 декабря 2011

Я пытаюсь обновить сайт Plone с 3.3.5 до Plone 4.1.2.Я установил чистую копию 4.1.2 и попытался скопировать Data.fs в 4.1.2.Мне пришлось удалить папку членов, так как она была типа LargePloneFolder, которая больше не поддерживается.На 32-битной виртуальной машине это работало просто отлично.Однако я столкнулся с ошибками на моей 64-битной виртуальной машине.Копирование Data.fs из Plone 3.3.5 (на той же машине) или Data.fs из Plone 4.1.2 на 32-битной машине привело к той же ошибке.

Трассировка стека:

Iz@bigBox# 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 Unified Installer

Я также пытался упаковать базу данных.использование fsrecover.py в Plone 3.3.5, а также использование графического интерфейса.Но это тоже не помогает.Это странно, потому что я не получаю абсолютно никаких ошибок при моей 32-битной установке, и миграция Data.fs прошла отлично.

Я копирую db с помощью команды cp, сохраняя все разрешения с опцией -p, которая отлично работает на32-битная виртуальная машина.

1 Ответ

4 голосов
/ 06 декабря 2011

Упакуйте свою базу данных и / или попробуйте удалить все старые "Версии ZODB" в Zope2 / Control_Panel внутри вашей работающей установки Plone 3.3.x перед попыткой миграции. Или попробуйте выполнить экспорт ZEXP всего сайта Plone и импортировать его в чистую установку 3.3.5, прежде чем пытаться выполнить миграцию 4.x. «Версии» (длительные транзакции) не поддерживаются в более новых версиях ZODB и не рекомендуются в течение как минимум нескольких лет.

Смотрите эту тему: https://mail.zope.org/pipermail/zodb-dev/2010-September/013620.html

...