Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Lock conflict on no wait transaction (https://www.clubdelphi.com/foros/showthread.php?t=46767)

gorsan 08-08-2007 08:32:03

Lock conflict on no wait transaction
 
Hola a todo el que lea este hilo. Vaya por delante que estoy aprendiendo en este mundillo de IBX, practicamente empezando y claro me surgen problemas que hacen que me pare cada dos por tres. El objeto de mi consulta es el siguiente:
Estoy desarrollando una aplicacion en Interbase 6 y Delphi 7. En el modulo de datos de la misma he dispuesto los siguientes componentes:
1 IBDataBase
1 IBTransaction con los parametros: read_committed, rec_version y nowait.
3 IBDataSet
3 DataSource
y otros componentes como IBStoredProc, IBQuery que creo no tienen nada que ver en la consulta que me ocupa.
Cuando ejecuto desde un pc la aplicacion contra el servidor no hay problemas pero cuando desde otro pc, estando corriendo la aplicacion en el primero, hago lo mismo, es decir ya hay dos clientes contra el servidor me sale continuamente el mensaje:

"lock conflict on no wait transaction deadlock".

¿Alguien me puede arrojar algo de luz sobre el tema o darme alguna pista acerca de qué es lo que esta pasando?
Muchas gracias por sus respuestas por anticipado.

Delphius 08-08-2007 08:39:36

Hola gorsan,
Por el error que expones, al parecer se debe a que hay dos transacciones que quieren modificar el mismo registro activo.

Sin ver algo de código no puedo decirte más. ¿Serías tan amable de darnos mayores detalles?

Saludos,

gluglu 08-08-2007 09:47:56

Ese error te lo va a dar cada vez que dos usuarios intenten modificar el mismo registro, y uno de ellos haga un Post sobre el registro y NO REALICE UN COMMIT de la transacción, y el otro esté todavía con la edición del mismo. Cuando el segundo intente hacer el Post (sin que el primero haya realizado un Commit de la transacción) suyo correspondiente te saltará ese error.

Es simplemente inevitable por la propia lógica de la BD.

El segundo usuario supuestamente va a grabar encima del resultado que confirmó el primero y la BD se queja.

La manera más inmediata de solucionar este tema es que realices el commit, o el CommitRetaining, de la transacción inmediatamente después del Post.


La franja horaria es GMT +2. Ahora son las 00:42:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi