Bug #27289 Transaction is not rolledback when connection close
| Submitted: | 20 Mar 2007 13:26 | Modified: | 26 Mar 2007 6:33 |
|---|---|---|---|
| Reporter: | Luciano C | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | Connector / NET | Severity: | S2 (Serious) |
| Version: | 5.0.5.0 | OS: | Windows (Windows XP) |
| Assigned to: | CPU Architecture: | Any |
[22 Mar 2007 13:08]
Tonci Grgin
Hi and thanks for your report. I think it's intentional behavior but will consult.
[22 Mar 2007 21:16]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/22707
[23 Mar 2007 1:35]
Luciano C
Yes, maybe it is a common intentional mistake, but, how do i check if it is already a transaction opened? Maybe it is intentional, but i think that is a bug either :) Thanks
[23 Mar 2007 2:26]
Reggie Burnett
Fixed in 5.0.7
[26 Mar 2007 6:33]
MC Brown
A note has been added to the 5.0.7 changelog.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.054 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: When you have pooling enabled in the connection string and then you open a new connection, start transaction, make some command execution, and then disconnect (without rollback or commit) it does not automatic rollback, so, in the next connection open, it already have a transaction opened. This situation, is not really common one, but, if i forgot to trap an Exception, and i cannot rollback the operation, in the next operation it will be throwing an exception. How to repeat: // A little hack MySqlConnection conn = new MySqlConnection("..."); conn.Open(); MySqlTransaction trans = conn.BeginTransaction(); MySqlCommando cmd = new MySqlCommand("MyExe", conn, trans); cmd.ExecuteNonQuery(); conn.Close(); conn.Open(); MySqlTransaction trans = conn.BeginTransaction(); // This throw an InvalidOperationException, telling that a transaction context is already opened, and cannot created nested transactions. Suggested fix: To rollback the transaction when the connection is closed or disposed.