I'm hoping that someone can help us understand what is going on here - 
though if it's the wrong list please let me know :-).  Although the 
context is zope, the nub of the issue seems to be ZODB-related.

We needed to recover some old data that had been deleted from a 
FileStorage and wrote a small "zopectl" script to do this:

  - we started zope with "zopectl debug";
  - we used zc.beforestorage to open a separate COPY of the database at 
an earlier data;
  - we located the objects in the old copy;
  - we attempted to insert a copy of the OLD object into the current 
database (following zope's _getCopy method):

         container = app.new_folder

  - this seemed to work fine, but when I go to commit, I get an error:

    (from ZODB.serialize.py - line 350)

            if obj._p_jar._implicitlyAdding(oid):
                raise InvalidObjectReference(
                    "A new object is reachable from multiple databases. "
                    "Won't try to guess which one was correct!"

Can anyone shed any light on what this error means?!  Given a persistent 
object, what is the correct way to get a completely fresh copy that is 
not tied to any database at all, so I can transfer these old objects to 
the current database.

Thanks for your help!


For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to