I have a MYSQL InnoDB database.

I'm using SQLOBJECT through Turbogears 0.8something

I have a table called Voter with an important BoolCol attribute
called hasVoted, and another table called Ballot that records
the voter's choices.

I go:

voter = Voter.get(someId)
...
hub.begin()  <-- supposed to start a transaction

ballot = Ballot(district.id, encryptedAnswers)
voter.hasVoted = True

hub.commit()
hub.end()

So how could it happen that the database examined after this
shows that the ballot row has been created but that the
voter.has_voted has value 0 (i.e. False). That's what
happened. This is very bad.

Any ideas how it happened? What can I change to prevent it?
By the way, I have not modified the defaults so cacheValues is True
and updates are supposed to be immediately written to db.

I know that caceValues is not supposed to be true if I'm using
a transaction, but I don't see how this should affect the integrity
of the attribute update that's supposed to flush immediately to
db and is lexically and thus timewise within the transaction.

Very confused and concerned. Any suggestions?


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0944&bid$1720&dat1642
_______________________________________________
sqlobject-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to