Hello. Thanks for your input. All I am doing is inserting a record into a table and as far as I know, this is not considered to be a transaction. A transaction would consist of multiple SQL statements whose execution would either be successsfull or unsuccessfull(hence the need to either commit or rollback). The funny thing is that I can insert a record using this same ZSQL method while attempting to test it via the ZMI. However, when called from a DTML method, the NotSupportedError still occurs. Suggestions anyone? - Asad On Wed, 12 May 2004, Dieter Maurer wrote:
Asad Habib wrote at 2004-5-12 10:32 -0400:
Hello, I am trying to add a record to a MySQL database using a Z SQL method. The Z SQL method works fine and I have tested it by itself. Also, when called from a DTML method the Z SQL method adds the record to the database but Zope returns the following error: ... * Module Shared.DC.ZRDB.TM, line 63, in abort * Module Products.ZMySQLDA.db, line 328, in _abort
NotSupportedError: (1196, "Warning: Some non-transactional changed tables couldn't be rolled back")
This is not mysterious at all:
The standard MySQL tables do not support transactions (there are "inno"db tables that do).
Your request was aborted and Zope wanted to tell MySQL to rollback the transaction (and undo the changes done in this request). This is not possible (with standard tables). You get informed about this failure.
There is a way to suppress this error report. I think (though I am not sure) that prefixing the connect string with "-" does this. Of course, MySQL does not learn aborts by this. It is just that the problem report is suppressed.
The cleaner way is to use transactional tables or a different database system....
-- Dieter