Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-08-2018
ander ander is offline
Miembro
 
Registrado: may 2003
Posts: 56
Poder: 21
ander Va por buen camino
[FireDAC] lock conflict on no wait transaction deadlock update conflicts

Tengo un TFDconnection y un TFDTransaction y a su vez varios TFDQuery .

En un principio, no tengo problemas para ejecutar este trozo de programa

Código Delphi [-]
procedure TFModulo.Write_New_Order(NUMPE:integer);
 begin
  New_Order.close;
  New_Order.SQL.clear;
  New_Order.SQL.add('UPDATE ORDERS SET N_FABRIC_S=:N_FABRIC_S,N_CLIENT_S=:N_CLIENT_S,CALIDAD=:CALIDAD');
  New_Order.SQL.add('WHERE N_PEDIDO='+''''+IntToStr(NUMPE)+'''');
  New_Order.ParamByName('N_FABRIC_S').AsString    := '1234';
  New_Order.ParamByName('N_CLIENT_S').AsString    := 'Pako';
  New_Order.ParamByName('CALIDAD')   .AsString      := 'Good';
  New_Order.EXECSQL;
  FModulo.FDTransaction.commitretaining;
 end;

Pero a cierto tiempo, me empieza a saltar este error :

Project prueba.exe raised exception class EIBNativeException with message '[FireDAC][Phys][FB] lock conflict on no wait transaction deadlock update conflicts with concurrent update

y no hay manera que se restablezca de nuevo.
Salgo del programa y vuelvo arrancarlo ,va bien de nuevo (con los mismos datos).

Alguna idea de que puede ser???

Windows 10 , Delphi 10.2 y Firebird 2.5
Responder Con Cita
  #2  
Antiguo 08-08-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues hay algo que no se está haciendo bien con las tracciones, difícil decirte exactamente sin ver el código ni los parámetros de los distintos componentes.
Haz una búsqueda en los foros con la palabra deadlock, a ver si encuentras "inspiración".
Mira los enlaces relacionados que están al final de esta página, abajo del todo.
Responder Con Cita
  #3  
Antiguo 08-08-2018
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 639
Poder: 21
ASAPLTDA Va por buen camino
Thumbs up Lock Conflicto

Código Delphi [-]
procedure TFModulo.Write_New_Order(NUMPE:integer);
 begin
 
  FModulo.FDTransaction.commitretaining;
 end;

Pero a cierto tiempo, me empieza a saltar este error : Lock Conflicto

Hola he tenido dificultad en migrar de los componentes sql-direct a firedac en el manejo de transacciones

Uno de los problemas es con el CommitRetaining el cual graba los datos en la base de datos que solo son visibles para el programa que graba la informacion, si otro pograma o en otra terminal se hacen los cambios al mismo archivo podria tener diferencias, y los hace visible los cambios cuando sales del programa. Podrias revisar si solo con cambiar a commit el problema se solucciona.

Ten en cuenta como tienes definido el componente de conexion a la base de datos , si autocommit o no.

No se si cuando usas el insert en el archivo se disparen triggers que afecten a otros archivos

mi skype es logisticasoft

Saludes desde Cali Colombia
Responder Con Cita
  #4  
Antiguo 08-08-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Estás contestando a ander, o estás haciendo tu propia pregunta?
Responder Con Cita
  #5  
Antiguo 09-08-2018
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 639
Poder: 21
ASAPLTDA Va por buen camino
Sobre commit

Comparto mi experiencia con la cual podría buscar la solución al problema, saludes
Responder Con Cita
  #6  
Antiguo 09-08-2018
ander ander is offline
Miembro
 
Registrado: may 2003
Posts: 56
Poder: 21
ander Va por buen camino
Cita:
Empezado por ander Ver Mensaje
Tengo un TFDconnection y un TFDTransaction y a su vez varios TFDQuery .

En un principio, no tengo problemas para ejecutar este trozo de programa

Código Delphi [-]
procedure TFModulo.Write_New_Order(NUMPE:integer);
 begin
  New_Order.close;
  New_Order.SQL.clear;
  New_Order.SQL.add('UPDATE ORDERS SET N_FABRIC_S=:N_FABRIC_S,N_CLIENT_S=:N_CLIENT_S,CALIDAD=:CALIDAD');
  New_Order.SQL.add('WHERE N_PEDIDO='+''''+IntToStr(NUMPE)+'''');
  New_Order.ParamByName('N_FABRIC_S').AsString    := '1234';
  New_Order.ParamByName('N_CLIENT_S').AsString    := 'Pako';
  New_Order.ParamByName('CALIDAD')   .AsString      := 'Good';
  New_Order.EXECSQL;
  FModulo.FDTransaction.commitretaining;
 end;

Pero a cierto tiempo, me empieza a saltar este error :

Project prueba.exe raised exception class EIBNativeException with message '[FireDAC][Phys][FB] lock conflict on no wait transaction deadlock update conflicts with concurrent update

y no hay manera que se restablezca de nuevo.
Salgo del programa y vuelvo arrancarlo ,va bien de nuevo (con los mismos datos).

Alguna idea de que puede ser???

Windows 10 , Delphi 10.2 y Firebird 2.5
Gracias por vuestras respuestas
Me he pasado muchas horas mirando y haciendo pruebas con los componentes de firedac y me han surgido muchas dudas al respecto. Cuando usaba los componentes de Interbase no había tenido tantos problemas.
Lo curioso que con un TFDconnection y un TFDTransaction al hacerle FDTransaction.commit me surgía el error y si lo hacia con el FDconnection.commit me hace bien y no me da ningún error ( curioso ). Estos dos componentes están dentro de un Datamodule con algún TFDQuery . Imaginaos que tengo este Datamodule y un Form (que es el principal) y en este Form genero un programilla con una consulta e implemento el Datamodule, para acceder al TdConnection ect... Con ese programilla hago un 'Update' pero los datos en la tabla no se actualizan( ni con el commit) ,se actualizan cuando se sale del programa y vuelvo a entrar (cosa que no sucede cuando el programilla se encuentra en el datamodule ).
¿Puede ser porque en el Datamodule se han generado en el uses, todas las llamadas al firedac y en el Form no ? (No los sé)
Seguiré probando.
Responder Con Cita
  #7  
Antiguo 09-08-2018
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 639
Poder: 21
ASAPLTDA Va por buen camino
Uso de conección y transacción con firebird

Cuando usted usa el componente transacción debe tener en cuenta que firebird a diferencia de otras bases de datos puede manejar varias transacciones simultaneas, por lo que debe uno ser muy cuidadoso al usar el componente fdtradacton, por eso yo solo uso connecion para manejar las transacciones
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Lock conflict on no Wait transaction Deadlock gorsan Conexión con bases de datos 3 12-03-2015 09:24:13
lock conflict on no wait transaction berna Firebird e Interbase 1 02-08-2012 22:54:50
lock conflict on no wait transaction deadlock Chogo Firebird e Interbase 1 07-07-2010 18:44:45
Lock conflict on no wait transaction gorsan Conexión con bases de datos 2 08-08-2007 10:47:56
Dead lock update conflicts with..... ElCherchu Conexión con bases de datos 3 10-07-2003 18:53:24


La franja horaria es GMT +2. Ahora son las 15:26:47.


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