Hello,<br>I have a very old Zope instance (it was upgraded from Zope 2.4 to Zope 2.7 and later to Zope 2.13) that has a number of problems. There&#39;re instances of products that no longer exist, for example. They can&#39;t be removed by using any means. They can&#39;t be removed from Zope user interface (some of them aren&#39;t even visible). They can&#39;t be removed from python prompt as described in this document:<br>
<a href="http://zodb.org/documentation/articles/multi-zodb-gc.html">http://zodb.org/documentation/articles/multi-zodb-gc.html</a><br><br>The simplest script to replace broken object with some pristine object doesn&#39;t work:<br>
<div style="margin-left:40px">replace_obj = OrderedFolder(&#39;removeme&#39;)<br>replace_obj._p_oid = p64(BROKEN_OBJECT_ID)<br>replace_obj._p_jar = app._p_jar<br>app._p_jar._register(replace_obj)<br>app._p_jar._added[p64(BROKEN_OBJECT_ID)] = replace_obj<br>
</div><br>This code always fails because with the following exception:<br>ConflictError: database conflict error (oid 0x0db8, class OFS.OrderedFolder.OrderedFolder, serial this txn started with 0x00 1900-01-01 00:00:00.000000, serial currently committed 0x03384864da015019 2000-11-05 00:36:51.094952)<br>
<br>As far as I understand ConflictError is raised because transaction code always attempts to read broken object and compare it with the new object. I couldn&#39;t find any working way to remove such broken objects from the database and they often get in the way. :(<br>
<br>Is there some other way to remove them?<br>Eugene<br>