Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-06-2016
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
Cool fijar cambios en mysql

Buen dia compañeros, tengo un problema que surgio a consecuencia de una falla electrica, dejen les comento
tengo un sistema hecho en lazarus, se conecta a mysql por medio de componente zeos. todo esto en ubuntu 14.04.

todo funciona bien y de maravilla, el cliente feliz, Pero el dia de ayer cayo una tormenta y se les fue la luz, esto causo un lio, les comento, tengo una tabla llamada asignacion en la cual tengo un campo de tipo int not null default 0.

cada que un gestor realiza su labor se le asigna un numero de folio (el cual se guarda en el campo antes mencionado). esto lo hacia con un dataset de manera directa. todo bien.


pues el asunto esta en que en ese momento de falla de energia, la computadora del gestor se apago, no asi la que tienen como servidor donde esta la base de datos (al menos eso dice el cliente), el problema es que cuando reinicio el servicio de luz el gestor entro y se llevo la sorpresa de que se encontraba en el folio 1 cuando ya iba en el 90. es decir ese campo en especifico perdio su valor, regreso todos a cero.

si el servidor no se apago, me parecio muy raro, luego opte por hacer un procedimiento almacenado que se encargara de hacer el update para que fuera mas seguro. de esta manera del programa mando llamar el procedimiento y le doy como parametro el id de la tabla asignacion y el valor del folio. Mi cliente como muchos hizo la prueba de empezar a gestionar y repentinamente desconectar su maquina.

sucedio lo mismo, los valores del campo "num" simplemente se volvieron a cero todos. Siendo sinceros no me doy idea de porque pasa esto, talvez en el procedimiento almacenado tenga que incluir alguna instruccion extra algun commit o algo parecido

aca mi procedimiento:

Código PHP:
delimiter //
create procedure fijar (in nasigna intin nfolio int
begin 
update asignacion set num 
nfolio where id_asignacion nasigna;
end // 
y para llamarlo desde el codigo de mi programa solo hago

Código Delphi [-]


dm.cambia(dm.ds1, 'call fijar (' + dm.dsasignacionid_asignacion.AsString + ', ' + edfolio.text);

dm.cambia

Código Delphi [-]
procedure tdm.cambia(data: tzquery; filtro: string)
begin 

   data.close;
   data.sql.clear;
   data.sql.text:= filtro;
   data.ExecSQL;

end;

donde dm es mi data modulo, ds1 un dataset, en el zconnection tengo habilitada la opcion AutoCommit en true.

Siendo sinceros no se como pueda hacer para garantizar que ese cambio se fije una vez que se mande llamar el procedimiento.
Alguien con mas experiencia en MySql que me pueda orientar

Saludos
__________________
un tipo al cual la sociedad no le tiene el mas mínimo respeto no puede ser presidente....
Responder Con Cita
  #2  
Antiguo 10-06-2016
bitbow bitbow is offline
Miembro
 
Registrado: jul 2006
Posts: 366
Poder: 18
bitbow Va camino a la fama
No recuerdo si en MySQL se pueden usar secuencias o generadores, puedes probar usando estos.

Saludos.
__________________
¡Ni como ayudarte Niño!!
bitbow
Responder Con Cita
  #3  
Antiguo 10-06-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola, no me queda claro cómo estás asignando el folio. ¿El campo que mencionas es un autoinc o quién genera el folio, quién hace la actualización?

LineComment Saludos
Responder Con Cita
  #4  
Antiguo 10-06-2016
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
Cool

que tal amigos, ya se resolvio el problema, el dia de hoy borre la base de datos la volvi a generar de un respaldo, hicimos pruebas y todo funciono muy bien.

Siendo sinceros creo que se pudo haber dañado la bd. y al volverla a generar se soluciono el problema, incluso a uno de los gestores le desconectamos la maquina para simular un corte de luz y cuando volvio a entrar todo bien.

Saludos y gracias por su atención
__________________
un tipo al cual la sociedad no le tiene el mas mínimo respeto no puede ser presidente....
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
Cómo fijar IDE en D4PHP alquimista_gdl PHP 2 30-08-2008 00:49:16
MySQL No se registran los cambios de inmediato rbaso76 MySQL 2 18-10-2005 02:31:33
Fijar la posicion de un showModal NuncaMas Varios 1 09-02-2005 10:24:52
Fijar las toolbars ibstk Varios 4 09-02-2005 03:37:49
Fijar Bandas noir Impresión 2 15-05-2003 17:38:28


La franja horaria es GMT +2. Ahora son las 11:30:14.


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