PDA

Ver la Versión Completa : transacciones, delphi 7 y mysql


chileno
28-06-2005, 04:38:47
hola....
felicitaciones por la comunidad que tienen y gracias por dejarme participar.

estoy iniciando un proyecto y estoy en la etapa de probar lo que ya he selecionado (delphi 7, mysql 4.0.22, ZeosDBo-6.1.5-stable)
la conexion de estos tres elementos va de maravillas tanto en una maquina local, como en red.

para dar mayor confianza a las actualizaciones a la DB voy realizar transacciones a nivel de los componentes zeos.

al componente zconnection en las propiedades AutoCommit y TransactIsolationLevel les doy true y tiReadCommitted respectivamente, todo esto en tiempo de diseño, en tiempo de ejecucion realizo esta pequeña rutina:

Procedure.TFrom1.Button1Click(Sender:TObject);
begin
Zconnection.StrartTransaction;
try
Ztable.ApplyUpdates;
Zconnection.commit;
except
Zconnection.Rollback;
raise;
end;
Ztable.CommitUpdates
end;

cuando le doy al button me da el sgte error: "Invalid operation in non AutoCommit mode". como se ve al darle true a la propiedad AutoCommit, todo funciona de maravillas, pero creo que no es la idea, la idea es hacer una transaccion manual, la que se realiza en la rutina anterior.
la verda no se a que se debe, sera problemas de los componentes o yo???

espero que me iluminen para resolver este problema¡¡¡¡¡

chileno
28-06-2005, 19:09:59
por mi parte estoy buscando la respuesta...que hasta e momento ah sido esquiva....les pido una ayudita a todos¡¡¡¡

jachguate
28-06-2005, 21:15:59
Quizas tu problema radique en que mySQL no tiene soporte para transacciones en todos los tipos de tablas.

Creo que el siguiente enlace puede serte de utilidad.

http://www.mysqlfreaks.com/mysql/manual_Introduction.html#ANSI_diff_Transactions

Hasta luego.

;)

chileno
28-06-2005, 22:14:46
jachguate (http://www.clubdelphi.com/foros/member.php?u=195) ..hola¡¡¡

antes de leer el contenido del link que me enviaste, te digo que las tablas que utiliso son del tipo innodb....

jachguate
29-06-2005, 00:39:50
jachguate (http://www.clubdelphi.com/foros/member.php?u=195) ..hola¡¡¡

antes de leer el contenido del link que me enviaste, te digo que las tablas que utiliso son del tipo innodb....

Buen punto!

Si lo hubieras mencionado antes, ambos hubiesemos dejado de perder algo de tiempo hoy... :mad:

chileno
29-06-2005, 01:13:24
perdona por el tiempo...se me fue ese punto.....

pero que me dices ...es normal que suceda eso.....
sera la version de zeos

bueno toy probando utilizar en forma directa las transacciones en mysql,
con los comando begin; commit ; Rollback, hice unas pruebas y funciona
pero me gustaria ver un ejemplo optimizado

haber hago esto pero no se si estar bien

procedure buttonclik(sender: TObjet);
begin
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('begin');
ZQuery1.ExecSQL;
try
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('insert into categoria values (:p1,:p2)');
Zquery1.Params[0].Value := edit1.Text;
ZQuery1.Params[1].Value := edit2.Text;
ZQUery1.ExecSQL;
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('Commit');
ZQuery1.ExecSQL;
except
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('rollback');
ZQuery1.ExecSQL;
end;
end;

quizas esto es una pendejada, si es asi corrijeme porfavor, pero me gustaria utilizar las transacciones atravez de los componentes, la verdad no se lo que pasa...

roman
29-06-2005, 16:50:23
Para empezar yo creo que tu pregunta no está bien explicada.

Comienzas diciendo que


al componente zconnection en las propiedades AutoCommit y TransactIsolationLevel les doy true y tiReadCommitted


y comentas que


cuando le doy al button me da el sgte error: "Invalid operation in non AutoCommit mode".


Sin embargo luego dices


al darle true a la propiedad AutoCommit, todo funciona de maravillas


Entonces ¿en qué quedamos? Funciona o no funciona con AutoCommit = true?

Así que es difícil entender cuál es realmente el problema. De cualquier forma, quizá aplique en tu caso este reporte (http://sourceforge.net/tracker/index.php?func=detail&aid=1004584&group_id=35994&atid=415824) en la lista de fallos de ZEOS así como la respuesta que le da Seroukhov.

// Saludos

chileno
01-07-2005, 17:08:32
gracias roman¡¡¡¡

el link que me enviaste esta la respuesta a mis dudas...veo que si entendias mi duda¡¡

roman
01-07-2005, 18:44:59
veo que si entendias mi duda¡¡

Pues realmento no y sigo sin entenderla. Pero entré a la página del proyecto Zeos y ese reporte me pareció que podía aplicar a tu caso.

// Saludos