SHOW ERRORS

SHOW ERRORS muestra los errores generados por la última sentencia ejecutada. A diferencia de SHOW WARNINGS que muestra errores, advertencias y notas, SHOW ERRORS solo muestra los errores.

Sintaxis

-- Ver todos los errores
SHOW ERRORS;
 
-- Ver un número limitado
SHOW ERRORS LIMIT cantidad;
 
-- Ver con offset
SHOW ERRORS LIMIT offset, cantidad;
 
-- Contar errores
SHOW COUNT(*) ERRORS;

Ejemplo básico

-- Provocar un error
-- SELECT * FROM tabla_inexistente;
-- Error: Table 'tienda_mysql.tabla_inexistente' doesn't exist
 
-- Ver el error
SHOW ERRORS;
LevelCodeMessage
Error1146Table 'tienda_mysql.tabla_inexistente' doesn't exist

Columnas del resultado

ColumnaDescripción
LevelSiempre 'Error' para SHOW ERRORS
CodeCódigo de error numérico de MySQL
MessageTexto descriptivo del error

SHOW COUNT ERRORS

-- Contar errores de la última sentencia
SHOW COUNT(*) ERRORS;
@@session.error_count
1

También puedes acceder al conteo con la variable:

SELECT @@error_count;

Errores vs Warnings

-- SHOW ERRORS: solo errores (Level = 'Error')
SHOW ERRORS;
 
-- SHOW WARNINGS: errores + advertencias + notas
SHOW WARNINGS;

GET DIAGNOSTICS

Para obtener información detallada dentro de procedimientos, usa GET DIAGNOSTICS en lugar de SHOW ERRORS:

DELIMITER //
 
CREATE PROCEDURE diagnostico_ejemplo()
BEGIN
    DECLARE v_code INT;
    DECLARE v_msg VARCHAR(200);
    DECLARE v_count INT;
 
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
    BEGIN
        -- Número de condiciones
        GET DIAGNOSTICS v_count = NUMBER;
 
        -- Detalle de la primera condición
        GET DIAGNOSTICS CONDITION 1
            v_code = MYSQL_ERRNO,
            v_msg = MESSAGE_TEXT;
 
        SELECT v_count AS total_condiciones,
               v_code AS codigo,
               v_msg AS mensaje;
    END;
 
    -- Provocar error
    INSERT INTO tabla_inexistente VALUES (1);
END //
 
DELIMITER ;
CALL diagnostico_ejemplo();
total_condicionescodigomensaje
11146Table 'tienda_mysql.tabla_inexistente' doesn't exist

Propiedades de GET DIAGNOSTICS CONDITION

PropiedadDescripción
MYSQL_ERRNOCódigo de error de MySQL
MESSAGE_TEXTMensaje descriptivo
RETURNED_SQLSTATECódigo SQLSTATE
TABLE_NAMETabla relacionada
COLUMN_NAMEColumna relacionada
SCHEMA_NAMEEsquema relacionado

error_count y max_error_count

-- Ver el máximo de errores que MySQL almacena
SELECT @@max_error_count;
@@max_error_count
1024
-- Cambiar el máximo para la sesión
SET max_error_count = 100;

Limpieza

DROP PROCEDURE IF EXISTS diagnostico_ejemplo;

En el siguiente artículo veremos SHOW WARNINGS para inspeccionar advertencias y notas además de errores.

Escrito por Eduardo Lázaro