Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2007
japons japons is offline
Registrado
 
Registrado: feb 2006
Posts: 9
Poder: 0
japons Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 16-01-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
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

Última edición por fdelamo fecha: 16-01-2007 a las 13:38:52.
Responder Con Cita
  #3  
Antiguo 16-01-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
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?
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
  #4  
Antiguo 16-01-2007
japons japons is offline
Registrado
 
Registrado: feb 2006
Posts: 9
Poder: 0
japons Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 16-01-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Poder: 22
ArdiIIa Va por buen camino
Post

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;
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
De Interbase 7.0 a Firebird 1.5.3 Fita Firebird e Interbase 4 31-01-2006 23:39:44
De interbase a Firebird dvlt Firebird e Interbase 13 29-01-2006 20:12:31
Duplicidad de lineas en un grid con select contra firebird saruman91 Firebird e Interbase 6 29-10-2004 02:41:33
FireBird contra Interbase Ismael Firebird e Interbase 7 06-10-2004 19:40:48
Aplicacion Dephi contra Interbase en red WAN Luis F. Orjuela Firebird e Interbase 2 19-08-2004 09:34:01


La franja horaria es GMT +2. Ahora son las 14:40:07.


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
Copyright 1996-2007 Club Delphi