BASE DE DATOS PARA APLICACIONES



T.S.U. LAURA HERNÁNDEZ MARTÍNEZ


 TRANSACCIONES Y MANEJO DE ERRORES EN MYSQL
Transacciones
• Las transacciones son todas aquellas operaciones con las
  cuales se da y recibe información atreves de diversas tareas.
• Una sola tarea (INSERT INTO tabla VALUES(datos); )
• Varias tareas, donde se puede utilizar SELECT, UPDATE, INSERT.
                           Propiedades
• Atomicidad.- Es la garantía de que todas las operaciones se
  tienen que cumplir si no llegase a suceder se tienen que
  deshacer los cambios.
• Consistencia.- Nos da la seguridad de que la información sea
  correcta y se actualice cuando se realice una operación.
• Aislamiento.- Garantiza que cada transacción se comporte
  diferente hasta que se confirme, independencia.
• Durabilidad.- Asegura que la información va a durar y estar
  correcta.
Características
• Las transacciones generalmente se acompañar de procedimientos
  almacenados cuando se trata de tomar decisiones , la estructura de
  una transacción es la siguiente:
• Inicio        start transaction
• Regresar         ROLL BACK(la ejecución no será completada)
• Fin         COMMIT
                                Estructura
CREATE procedure ingresar_dato (in un int)
         BEGIN
                start transaccion
                          if nu => 50 then
                                    insert into nu2 values(nu);
                          endif;
                COMMIT
         END//
Errores
Pero que hacer cuando ocurre algún imprevisto durante la
transacción.
Debemos encontrar la manera de manejar ese tiempo de
errores que se lleguen a presentar, para esto es necesario
auxiliarse de los HANDLER, los cuales nos permiten tomar
decisiones sobre los errores ocurridos durante una transaccion,
si el error no es de gran peligro continuar con el procedimiento
almacenado (CONTINUE), en caso contrario salirnos del
procedimiento almacenado deshaciendo todo lo ejecutado para
asegurar una transaccion (NEXT).
Estructura HANDLER
Todos los errores tienen un código, del cual debemos tener conocimiento para poder
insertarlo en el hadler y conozca que hacer cuando se presente el error indicado.

create tabla_error(error_message varchar(80));

Ahora creamos el procedimiento almacenado que se encargara de introducir datos en la BD y
manejar excepciones:
delimiter //                                                                        Se crea un procedimiento
           create procedure procedimientoConHandler(parametro1 int)                 almacenado para manejar
                                                                                             el error
                      begin
                                 declare exit handler for 1452      No. De error a manejar

                      begin
                                 insert into error_log values (concat('Time: ',current_date,'.
                                 Error de clave ajena para el valor= ', parametro1));
                      end;
                                 insert into t3 values (parametro1);
                                   .
                                   .
                                   .
                      end;
//
Manejo de error mediante if
• También se pueden manejar los errores con un if siguiendo la siguiente
  estructura:

PROCEDURE siceem.sp_delete_alumno_trans(IN p_curp VARCHAR(18))
BEGIN
declare error int;
START TRANSACTION;
delete
from siceem_t_datos_alumno_actual
where curp=p_curp;
                               En esta parte es donde se
set error=(Select @error);          obtiene el error

if(error>0) then
ROLLBACK;
else
COMMIT;
end if;
END
Tipos de errores
• Hay distintos tipos de errores y debemos saber identificar que
  errores pueden provocar graves daños a nuestro sistema y
  cuales podemos hacer que pasen sin que provoquen daño
  alguno al sistema.
• Por ejemplo hay errores sobre creación o eliminación
  incorrecta de base de datos, estos tipos de errores podríamos
  omitirlos ya que en las transacciones a realizar no se
  encuentra el crear o eliminar bases de datos.
• En cambio si se tratan de errores de falla de conexión o el
  sistema se ha cerrado inesperadamente cuando se esta
  realizado una transacción debemos cachar ese error para que
  no provoque inestabilidad en nuestra base de datos.
Errores a considerar
Error: 1012 SQLSTATE: HY000 (ER_CANT_FIND_SYSTEM_REC)
  Mensaje: No puedo leer el registro en la tabla del sistema
Error: 1016 SQLSTATE: HY000 (ER_CANT_OPEN_FILE)
  Mensaje: No puedo abrir archivo: '%s' (Error: %d)
Error: 1017 SQLSTATE: HY000 (ER_FILE_NOT_FOUND)
  Mensaje: No puedo encontrar archivo: '%s' (Error: %d)
Error: 1022 SQLSTATE: 23000 (ER_DUP_KEY)
  Mensaje: No puedo escribir, clave duplicada en la tabla '%s'
Error: 1023 SQLSTATE: HY000 (ER_ERROR_ON_CLOSE)
  Mensaje: Error en el cierre de '%s' (Error: %d)
Error: 1024 SQLSTATE: HY000 (ER_ERROR_ON_READ)
  Mensaje: Error leyendo el fichero '%s' (Error: %d)
Error: 1025 SQLSTATE: HY000 (ER_ERROR_ON_RENAME)
  Mensaje: Error en el renombrado de '%s' a '%s' (Error: %d)
Error: 1026 SQLSTATE: HY000 (ER_ERROR_ON_WRITE)
  Mensaje: Error escribiendo el archivo '%s' (Error: %d)
Error: 1028 SQLSTATE: HY000 (ER_FILSORT_ABORT)
  Mensaje: Ordenación cancelada
Error: 1042 SQLSTATE: 08S01 (ER_BAD_HOST_ERROR)
  Mensaje: No puedo obtener el nombre de maquina de tu direccion
Conclusión

Es importante contar con la certeza y la seguridad de que las
transacciones se realicen garantizando la seguridad de y
consistencia de los datos, ya que los errores pueden provocar
grandes problemas, perdida de información , dinero , etc.

Errores

  • 1.
    BASE DE DATOSPARA APLICACIONES T.S.U. LAURA HERNÁNDEZ MARTÍNEZ TRANSACCIONES Y MANEJO DE ERRORES EN MYSQL
  • 2.
    Transacciones • Las transaccionesson todas aquellas operaciones con las cuales se da y recibe información atreves de diversas tareas. • Una sola tarea (INSERT INTO tabla VALUES(datos); ) • Varias tareas, donde se puede utilizar SELECT, UPDATE, INSERT. Propiedades • Atomicidad.- Es la garantía de que todas las operaciones se tienen que cumplir si no llegase a suceder se tienen que deshacer los cambios. • Consistencia.- Nos da la seguridad de que la información sea correcta y se actualice cuando se realice una operación. • Aislamiento.- Garantiza que cada transacción se comporte diferente hasta que se confirme, independencia. • Durabilidad.- Asegura que la información va a durar y estar correcta.
  • 3.
    Características • Las transaccionesgeneralmente se acompañar de procedimientos almacenados cuando se trata de tomar decisiones , la estructura de una transacción es la siguiente: • Inicio start transaction • Regresar ROLL BACK(la ejecución no será completada) • Fin COMMIT Estructura CREATE procedure ingresar_dato (in un int) BEGIN start transaccion if nu => 50 then insert into nu2 values(nu); endif; COMMIT END//
  • 4.
    Errores Pero que hacercuando ocurre algún imprevisto durante la transacción. Debemos encontrar la manera de manejar ese tiempo de errores que se lleguen a presentar, para esto es necesario auxiliarse de los HANDLER, los cuales nos permiten tomar decisiones sobre los errores ocurridos durante una transaccion, si el error no es de gran peligro continuar con el procedimiento almacenado (CONTINUE), en caso contrario salirnos del procedimiento almacenado deshaciendo todo lo ejecutado para asegurar una transaccion (NEXT).
  • 5.
    Estructura HANDLER Todos loserrores tienen un código, del cual debemos tener conocimiento para poder insertarlo en el hadler y conozca que hacer cuando se presente el error indicado. create tabla_error(error_message varchar(80)); Ahora creamos el procedimiento almacenado que se encargara de introducir datos en la BD y manejar excepciones: delimiter // Se crea un procedimiento create procedure procedimientoConHandler(parametro1 int) almacenado para manejar el error begin declare exit handler for 1452 No. De error a manejar begin insert into error_log values (concat('Time: ',current_date,'. Error de clave ajena para el valor= ', parametro1)); end; insert into t3 values (parametro1); . . . end; //
  • 6.
    Manejo de errormediante if • También se pueden manejar los errores con un if siguiendo la siguiente estructura: PROCEDURE siceem.sp_delete_alumno_trans(IN p_curp VARCHAR(18)) BEGIN declare error int; START TRANSACTION; delete from siceem_t_datos_alumno_actual where curp=p_curp; En esta parte es donde se set error=(Select @error); obtiene el error if(error>0) then ROLLBACK; else COMMIT; end if; END
  • 7.
    Tipos de errores •Hay distintos tipos de errores y debemos saber identificar que errores pueden provocar graves daños a nuestro sistema y cuales podemos hacer que pasen sin que provoquen daño alguno al sistema. • Por ejemplo hay errores sobre creación o eliminación incorrecta de base de datos, estos tipos de errores podríamos omitirlos ya que en las transacciones a realizar no se encuentra el crear o eliminar bases de datos. • En cambio si se tratan de errores de falla de conexión o el sistema se ha cerrado inesperadamente cuando se esta realizado una transacción debemos cachar ese error para que no provoque inestabilidad en nuestra base de datos.
  • 8.
    Errores a considerar Error:1012 SQLSTATE: HY000 (ER_CANT_FIND_SYSTEM_REC) Mensaje: No puedo leer el registro en la tabla del sistema Error: 1016 SQLSTATE: HY000 (ER_CANT_OPEN_FILE) Mensaje: No puedo abrir archivo: '%s' (Error: %d) Error: 1017 SQLSTATE: HY000 (ER_FILE_NOT_FOUND) Mensaje: No puedo encontrar archivo: '%s' (Error: %d) Error: 1022 SQLSTATE: 23000 (ER_DUP_KEY) Mensaje: No puedo escribir, clave duplicada en la tabla '%s' Error: 1023 SQLSTATE: HY000 (ER_ERROR_ON_CLOSE) Mensaje: Error en el cierre de '%s' (Error: %d) Error: 1024 SQLSTATE: HY000 (ER_ERROR_ON_READ) Mensaje: Error leyendo el fichero '%s' (Error: %d) Error: 1025 SQLSTATE: HY000 (ER_ERROR_ON_RENAME) Mensaje: Error en el renombrado de '%s' a '%s' (Error: %d) Error: 1026 SQLSTATE: HY000 (ER_ERROR_ON_WRITE) Mensaje: Error escribiendo el archivo '%s' (Error: %d) Error: 1028 SQLSTATE: HY000 (ER_FILSORT_ABORT) Mensaje: Ordenación cancelada Error: 1042 SQLSTATE: 08S01 (ER_BAD_HOST_ERROR) Mensaje: No puedo obtener el nombre de maquina de tu direccion
  • 9.
    Conclusión Es importante contarcon la certeza y la seguridad de que las transacciones se realicen garantizando la seguridad de y consistencia de los datos, ya que los errores pueden provocar grandes problemas, perdida de información , dinero , etc.