[CDBI] Class::DBI->_init called from Class::DBI->_insert

William Ross will at spanner.org
Tue Nov 22 10:44:28 GMT 2005


On 22 Nov 2005, at 10:06, Andy Sanders wrote:

> Perrin Harkins wrote:
>> On Mon, 2005-11-21 at 17:21 +0000, Andy Sanders wrote:
>>> Class::DBI->_insert calls Class::DBI->_init.  _init looks in the  
>>> Live_Object cache for an existing instance.
>> It shouldn't find one.  You're creating a new object, so by  
>> definition
>> it can't have the same primary key as an existing one.  If it  
>> does, your
>> primary key is not defined correctly.
>
> OK.  This is our situation:
>
> 1) We load the database (via Class::DBI).
> 2) We drop the database.
> 3) We create the database.
> 4) We try to insert an entry again.  Unfortunately, Class::DBI  
> still has the entry in its Live_Object cache from the first load.
>
> Is there a way we can empty/reset the cache?

$class->clear_object_index;

or if your real situation is more complex, you could look at  
subclassing _live_object_key and making the object key different  
after you've recreated the database.

obpedant: it's not really a cache, just an enforcer of uniqueness.

best

will




More information about the ClassDBI mailing list