I was running a pack and canceled so that I could reboot my box.  After it came 
back up I tried to restart the pack and got this:

2011-03-29 20:53:07,259 [zodbpack] INFO Opening storage (RelStorageFactory)...
2011-03-29 20:53:07,457 [zodbpack] INFO Packing storage (RelStorageFactory).
2011-03-29 20:53:07,464 [relstorage] INFO pack: analyzing transactions 
committed Tue Mar 29 20:49:48 2011 or before
2011-03-29 20:53:07,465 [relstorage.adapters.packundo] INFO pre_pack: start 
with gc enabled
2011-03-29 20:53:08,846 [relstorage.adapters.packundo] INFO discovering 
references from objects in 178910 transaction(s)
2011-03-29 20:53:10,808 [relstorage.adapters.packundo] ERROR pre_pack: failed
Traceback (most recent call last):
 line 431, in pre_pack
    conn, cursor, pack_tid, get_references)
 line 525, in _pre_pack_with_gc
    self.fill_object_refs(conn, cursor, get_references)
 line 347, in fill_object_refs
    added += self._add_refs_for_tid(cursor, tid, get_references)
 line 397, in _add_refs_for_tid
    self.runner.run_many(cursor, stmt, add_rows)
 line 90, in run_many
    cursor.executemany(stmt, items)
  File "build/bdist.linux-x86_64/egg/MySQLdb/cursors.py", line 206, in 
    r = r + self.execute(query, a)
  File "build/bdist.linux-x86_64/egg/MySQLdb/cursors.py", line 174, in execute
    self.errorhandler(self, exc, value)
  File "build/bdist.linux-x86_64/egg/MySQLdb/connections.py", line 36, in 
    raise errorclass, errorvalue
IntegrityError: (1062, "Duplicate entry '255911127406517196-2714-893440' for 
key 'PRIMARY'")
Traceback (most recent call last):
  File "/opt/zenoss/bin/zodbpack", line 8, in <module>
    load_entry_point('RelStorage==1.4.2', 'console_scripts', 'zodbpack')()

I'm in process of running mysqlcheck against the database and I have the 
application off line.  I've looked at the code but I'm not 100% what it's 
trying to do.  Thoughts?  Is my database hosed? or just my packing process. 


For more information about ZODB, see the ZODB Wiki:

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

Reply via email to