On 8/15/07 3:11 AM, Michael Lackhoff wrote:
> On 14.08.2007 22:43 John Siracusa wrote:
>> Assuming your have AutoCommit turned off, that's why $obj was not
>> saved.  The rollback rolled back everything done since the last
>> begin_work().
> 
> Well, I didn't switch AutoCommit on or off

Was it on or off when you connected to the database?

> and I didn't do a rollback myself, so the question remains why the default
> configuration with Apache::DBI and init_db(MyApp::DB->new) does a rollback
> when the database is accessed from a new db (in the helper)

In your example:

    some_helper_that_uses_db(); # rollback here

I assumed you called rollback() yourself inside that function.  As
discussed, Apache::DBI calls rollback() at the end of the request if
AutoCommit is off, and do_tranaction() calls rollback() if the code it's
passed to execute dies.  That's it.

> There was no error and I don't understand why $obj wasn't committed in
> the $db->commit at the very end.

It wasn't committed because the rollback that happened in
some_helper_that_uses_db() "undid" the as-yet-uncommitted $obj->save.
Again:

    my $obj = Products->new(db => $db);
    ...
    $obj->save;
    some_helper_that_uses_db(); # rollback here

If there was no commit() between $obj->save and the rollback that you say
happened inside some_helper_that_uses_db(), then $obj is not saved.

> Why would I need a second commit before the helper?

The real question is, why is some_helper_that_uses_db() causing a rollback?
Turn on DBI->trace(1) to be sure it actually is, and maybe try to create a
small test case.

-John



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Rose-db-object mailing list
Rose-db-object@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rose-db-object

Reply via email to