SOLUTION: Führt ZOPEHOME/lib/python/ZODB/fsrecover.py nicht zum gewünschten Erfolg, so kann die Datenbank auf Kommandozeilen-Ebene editiert werden.

#Achtung kein vollständiges Skript,
#Parametrisierung erforderlich!
#Befehle auf der Shell/Kommandozeile eingeben
#Umgebungsvariable sezten
PYTHONPATH=/opt/zope/lib/python;export PYTHONPATH
#python-interpreter aufrufen
ZOPEHOME/bin/python

from Zope import app
from ZODB import POSException 
from OFS import Folder | 
from OFS import DTMLMethod #a(Beispiele)

root= app() 
obj= root.unrestrictedTraverse('url_to_obj')
for id,val in obj.objectItems():
      try: val.getId()  #Einrückung beachten
      except POSKeyError: break

#(id) enthält jetzt das gesuchte objekt
#Löschen des Objektes
obj.manage_delObjects(id)
get_transaction().commit()

#optional (Neu)anlegen des Objektes
obj.manage_addFolder('Foldername')
get_transaction().commit()

##################################
#Beispiel für eine Fehlermeldung 
#bei korrupter Data.fs
------
2003-12-12T23:28:11 ERROR(200) 
ZODB Couldn't load state for 
'\x00\x00\x00\x00\x00\nY\xa7'
Traceback (innermost last):
  File /opt/Zope-2.6.1-linux2-x86/lib/python
  /ZODB/Connection.py,line 509, in setstate
  File /opt/Zope-2.6.1-linux2-x86/lib/python
  /ZODB/FileStorage.py,line 650, in load
    (Object: /opt/Zope-2.6.1-linux2-x86/var/Data.fs)
  File /opt/Zope-2.6.1-linux2-x86/lib/python
  /ZODB/FileStorage.py,line 624, in _load
    (Object: /opt/Zope-2.6.1-linux2-x86/var/Data.fs)
POSKeyError: 00000000000a59a7
------

COMMENT: Für eine detaillierte Beschreibung siehe den folgenden Link 'Editing Data.fs...'. Das Vorgehen ist unter Zope 2.6.1 getestet und funktioniert problemlos.

Thanks to Dieter Maurer and heureso

References:

Erstellt von: Dr. Volker Liebenberg , erstellt am:  27.06.2008 , zuletzt geändert: 19.07.2008

Erstellt von: Dr. Volker Liebenberg , erstellt am:  27.06.2008 , zuletzt geändert: 19.07.2008