[Zope] Strange problem with ZMySQLDA

Andy Dustman andy@dustman.net
Fri, 6 Jul 2001 13:47:12 -0400 (EDT)


On Thu, 5 Jul 2001, Kevin L wrote:

> I get the following error when calling a Z SQL Method within a
> <dtml-in> tag:
>
> Warning:  Some non-transactional changed tables couldn't be
> rolled back
>
> For example:
>
> <dtml-in "_.range(0,5)">
>   <dtml-call "insert_rec(num=sequence-number)">
> </dtml-in>
>
> The method just inserts one row into a table. Calling it on it's
> own works fine, as does executing it via the "Test" function.
> But calling it from inside <dtml-in> always gives the error.
>
> According to the mysql log file it runs the query (althoug the
> record does not get inserted) and then does a ROLLBACK (why???).

I'll have to guess that:

a) You are using ZMySQLDA-2.0.7 (or possibly .6).

b) Your MySQL server supports BDB tables or InnoDB tables (perhaps a
MySQL-Max package).

c) You are using MyISAM tables, which don't support transactions.

In this case, prefix your connection string with a dash, i.e.

    -db@host user password

This will disable transactions (ZMySQLDA-2.0.7 and up). ZMySQLDA-2.0.7
automatically senses if the server can use transactions, and if so,
ties into Zopes Transaction Manager. The dash tells it not to do this. A
plus will force it to try to use transactions, and an exception will be
raised if this is not possible.

-- 
Andy Dustman         PGP: 0xC72F3F1D
    @       .net     http://dustman.net/andy
I'll give spammers one bite of the apple, but they'll
have to guess which bite has the razor blade in it.