FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Error con las transacciones
Buenos días a todos/as,
estoy teniendo problemas con las transacciones (o eso es lo que parece en un principio) que me genera una serie de errores en el sistema. A continuación explico la situación por si estuviera haciendo alguna cosa mal y me pueden ayudar a solucionarlo (o a alguien le ha pasado lo mismo alguna vez). Utilizo Delphi 7 y tengo 3 bases de datos en Firebird y a las 3 accedo de la misma forma, con un TIBDatabase y un TIBTransaction. En el TIBTransaction tengo las propiedades "read_committed, rec_version, nowait". La cuestión es que en algunos procesos inserto registro en 2 o 3 tablas diferentes, haciendo un Transaction.CommitRetaining después de ejecutar la consulta (INSERT o UPDATE). Pues en principio todo funciona correctamente pero al tiempo de utilizar la aplicación da error al hacer cualquier operación y hay que cerrar la aplicación y volver a abrirla y funciona correctamente de nuevo. He probado a poner un Transaction.CommitRetaining y Transaction.Commit después de hacer todas las operaciones (al volver a la pantalla principal de la aplicación) pero sigo con el mismo problema. Es decir, que no se si es por las transacciones que se quedan abiertas y cuando voy a hacer otro INSERT o UPDATE me da error o es por otro motivo. Si no me he sabido explicar muy bien pero bueno. Muchas gracias de antemano y un saludo,
__________________
De lo bueno lo mejor, de lo mejor lo superior. |
#2
|
||||
|
||||
Cita:
Si es Deadlock, puede que sea de transacciones. Hay más de una conexión a cada base de datos o solo tienes un ejecutable funcionando? Si haces Commit o CommitRetaining después de cada insert/update/delete, es difícil que tengas errores de transacción. (A menos que haya más de una aplicación accediendo a la base de datos) |
#3
|
||||
|
||||
La aplicación se ejecuta en varios ordenadores a la vez. Y el error que da no se el porque, las consultas las tengo en un try y en el except muestro un formulario que he hecho yo para mostrar mensajes.
__________________
De lo bueno lo mejor, de lo mejor lo superior. |
#4
|
||||
|
||||
Cita:
En el bloque try ... except haz lo siguiente para ver el texto del error:
|
#5
|
||||
|
||||
Muchas gracias, voy a probarlo y en cuanto sepa algo ya lo comunico a ver que tal.
__________________
De lo bueno lo mejor, de lo mejor lo superior. |
#6
|
||||
|
||||
He probado lo que me dijiste pero no he podido ver el error porque es una aplicación que está en fábrica y no estoy todo el día encima para poder verlo, pero me ha dado errores al hacer consultas simples (SELECT * FROM X). No se si tendría que poner algo antes de realizar estas consultas para evitar este error (comprobar que no haya ninguna transacción abierta o algo así).
Seguiré investigando cosas a ver si puedo ver el error exacto que me da en el TRY para ponerlo aquí.
__________________
De lo bueno lo mejor, de lo mejor lo superior. |
#7
|
||||
|
||||
Podrías guardar el texto del error en un fichero.
Deberías guardar la fecha y hora, el texto del error y quizás alguna otra información, como el sql que ha generado el error o los parámetros que le has puesto. Puede ser que le envíes parametros fuera de ranco o que si construyes el where te quede algo mal. Por ejemplo
Si edit1.text es vacío, el sql será y dirá que la sentencia SQL está incompleta o algo asi |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Las transacciones y yo | gario | Conexión con bases de datos | 5 | 16-03-2009 17:23:13 |
Muchas transacciones al mismo tiempo error | muli | Firebird e Interbase | 9 | 11-04-2008 02:06:49 |
transacciones. | nazly | Varios | 4 | 13-06-2006 20:29:58 |
error en manejo de transacciones | JODELSA | Varios | 1 | 11-07-2005 16:50:56 |
|