Be careful with last_insert_id() and similar sql functions and Zope and more than one simultanous user: since all requests run over the same physical database connection, it is not guaranteed that your call last_insert_id() returns YOUR last inserted record ID. if another user performs an insert in the right moment you get HIS last id. the scenario: user1 inserts (gets ID 42) user 2 inserts (gets ID 43) user1 calls last_insert_id() (gets 43) phil *********** REPLY SEPARATOR *********** On 08.01.2001 at 08:27 Arno Gross wrote:
Dieters assumption was right. LAST_INSERTED_ID() returns a numeric value and that seems to be the problem. So if I change the statement as this: SELECT CONV(LAST_INSERT_ID(),10,10) it works (CONV returns a string!)
P.S. Soren, maybe you can update your HowTo with a short note. Another possibilty instead of using LAST_INSERT_ID can be using MAX(). That should work too.
Thanks Arno On Sat, 06 Jan 2001, Dieter Maurer wrote: > Arno Gross writes:
SELECT LAST_INSERT_ID()
This method works with Zope 2.2.4 under Linux and MySQL 3.22.32 but I got an error with Zope 2.2.2 under NT 4.0 and MySQL 3.22.29 Error, exceptions.KeyError: unhandled Sieht aus, als k�nnte der MySQL Anschluss den R�ckgabewert von "LAST_INSERT_ID" nicht in einen Python Datentyp wandeln, w�rde deshalb gerne eine "unhandled" Funktion aus einen Dictionary auslesen, die leider nicht drin ist.
Sieht f�r mich nach einem Upgrade auf eine neuere Version von MySQL bzw. seinen Python Anschluss aus.
Allerdings m�sste man zun�chst den Traceback genau anschauen, ob meine Vermutung auch wirklich zutrifft.
Dieter
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )