Hello, In a python script I got a structure like this: # Many request checks # A zSQl method deleting some old data cotainer.doDelete(key=key) errors = [ ] for data in list: # Other checks if error: errors.append(error) continue # Inserts in mysql database cotainer.doInsert(data=data, other=stuff) if errors: raise "An Error with list of error: %s" % ', '.join(errors) # --- cut --- The problem is that the raise is not rolling back the delete, looking in mysql log the following sequence was found: --Begin transaction [delete statement] [the insert statements] --Rollback --Begin transaction !! [delete statement again] !! --Commit !!! We tried it many times and revised our code. The only solution was to put the delete statement in weird block like this: if True: cotainer.doDelete(key=key) As if the rollback was only effective against a "2nd level" instruction. This is a really odd behavior but with this trick the rollback was done correctly. Has anyone ever seen this? Luiz Fernando B. Ribeiro