Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Firebird 1.5 contra Interbase 5 (https://www.clubdelphi.com/foros/showthread.php?t=39291)

japons 16-01-2007 13:10:48

Firebird 1.5 contra Interbase 5
 
Hola a todos:

Disculpad ante todos mi ignorancia. Tengo una aplicación en delphi 6, hace mucho tiempo, corriendo sobre Interbase 5. He pasado a Fierbird 1.5 y todo va de maravilla, hasta este instante, en el que acabo de detectar que se produce en ciertas circunstancias un deadlock, que con Interbase no se producía. ¿Alguien puede darme una pista de porqué?


Gracias de antemano

fdelamo 16-01-2007 13:30:25

Hola japons,

no se si irán por ahí los tiros, pero creo que firebird funciona así:

- haces un select de algo en una transaccion
- haces un update de algo (en otra transaccion)
- y haces un select de lo modificado pero con la primera transaccion (sin hacer commit ni rollback), creo que aquí peta, ya que esta transacción comenzó cuando se hizo el primer select, y el update se ha hecho después.

Mira a ver si puede ir por ahí el tema

ArdiIIa 16-01-2007 14:09:32

Mas o menos, el deadlock se produce cuando al modificado un registro, y este está pendiente de recibir el COMMIT. Cuando tratas de modificar nuevamente la tabla afectada y se da esa circunstancia, es cuando se produce el error. Para controlarlo, asegúrate que la transacción que modificó inicialmente la tabla, haga ese esperado commit.


Ya puestos a cambiar, ¿Por que no has pasado a la versión 2 de Firebird?

japons 16-01-2007 14:21:31

Cita:

Empezado por ArdiIIa
Mas o menos, el deadlock se produce cuando al modificado un registro, y este está pendiente de recibir el COMMIT. Cuando tratas de modificar nuevamente la tabla afectada y se da esa circunstancia, es cuando se produce el error. Para controlarlo, asegúrate que la transacción que modificó inicialmente la tabla, haga ese esperado commit.


Ya puestos a cambiar, ¿Por que no has pasado a la versión 2 de Firebird?


Ante todo, daros las gracias por vuestras prontas repsuestas. En cuanto a porqué no cambio a Firebird 2, basicamente porque el software lleva informes Fast report de una versión muy antigua, que en Firebird 1.5 funcionan, y en firebird 2 no, (ya lo he probado).

En cuanto al deadlock, mi problema viene porque la actualizacion de la tabla la hace un store procedure, como controlo esto?


Gracias

ArdiIIa 16-01-2007 14:45:22

Cita:

Empezado por japons
Ante todo, daros las gracias por vuestras prontas repsuestas. En cuanto a porqué no cambio a Firebird 2, basicamente porque el software lleva informes Fast report de una versión muy antigua, que en Firebird 1.5 funcionan, y en firebird 2 no, (ya lo he probado).

En cuanto al deadlock, mi problema viene porque la actualizacion de la tabla la hace un store procedure, como controlo esto?
Gracias

Curioso los de FastReport.

Referente al tu Store Procedure deberías hacer algo como esto:
Código Delphi [-]
with DataModule.IBStoredProcXXX DO
Begin
    ParamByName('xxx1').AsInteger := xxx
    ParamByName('xxx2').AsInteger :=  xxx
    ExecProc;
    Transaction.Commit;
End;


La franja horaria es GMT +2. Ahora son las 07:31:27.

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