Я пытаюсь собрать данные об ошибках из запросов в mysql с помощью хранимых процедур и не могу заставить работать следующее. Интересно, где я иду не так. Я использую этот предыдущий вопрос в качестве руководства:
Как сохранить MySQL Активировать информацию об исключении / ошибке в таблице или в переменных
Мой код ниже должен бросить ошибка, которая регистрируется в моей таблице ошибок, но она не регистрирует никаких ошибок. Где я иду не так?
Мой код:
-- error table
CREATE TABLE IF NOT EXISTS platenet.errors (
code varchar(30) NOT NULL,
message TEXT NOT NULL,
query_type varchar(50) NOT NULL,
record_id int(11) NOT NULL,
on_db varchar(50) NOT NULL,
on_table varchar(50) NOT NULL
);
-- tbl1
CREATE TABLE IF NOT EXISTS platenet.tblOne (
name varchar(100),
id INT(3)
);
-- my stored procedure
DELIMITER $$
DROP PROCEDURE IF EXISTS platenet.my_procedure;
CREATE PROCEDURE platenet.my_procedure()
BEGIN
-- Declare variables to hold diagnostics area information
DECLARE errorCode CHAR(5) DEFAULT '00000';
DECLARE errorMessage TEXT DEFAULT '';
-- Declare exception handler for failed insert
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS CONDITION 1
errorCode = RETURNED_SQLSTATE, errorMessage = MESSAGE_TEXT;
END;
-- Perform the insert
INSERT INTO platenet.tblOne VALUES('James', 'one.4');
-- Check whether the insert was successful
IF errorCode != '00000' THEN
INSERT INTO `errors` (code, message, query_type, record_id, on_db, on_table) VALUES (errorCode, errorMessage, 'insert', NEW.id, 'test_db2', 'users');
END IF;
END; $$
-- call my procedure
CALL platenet.my_procedure();
-- error table should have one error logged
SELECT COUNT(*) FROM platenet.errors;