如何从SHOW ERROR MySQL获取消息和错误代码

时间:2012-09-06 11:21:32

标签: mysql stored-procedures

我正在使用MySQL 5.5并使用SHOW ERRORS来检测存储过程中的错误。但我需要将SHOW ERRORS结果中的消息插入到我的日志表中。我该怎么做呢?。{SHOW ERRORS结果是这样的:

Level     Code     Message
========================================================
Error     1146     Table 'mysql.my_table' doesn't exist

2 个答案:

答案 0 :(得分:1)

如果MySQL有TRY-CATCH子句,那么你可以捕获错误并写下有关它的信息。

我建议你在应用程序级别执行此操作 - 捕获错误并将信息写入日志文件/表。

答案 1 :(得分:1)

我认为在5.5中没有办法做到这一点,但如果你已经更新到5.6+,你可以做到以下几点:

我使用GET DIAGNOSTICS来获取对错误信息的访问权限,然后将这些信息用作插入错误日志的输入。

创建结构,例如:

CREATE TABLE table_that_exists 
(
column_that_exists INT(11) NOT NULL
, PRIMARY KEY (column_that_exists)
);

CREATE TABLE tbl_error_log 
(
id INT(11) NOT NULL AUTO_INCREMENT
, err_no INT(4)
, err_msg VARCHAR(50)
, source_proc VARCHAR(50)
, PRIMARY KEY (id)
);

运行查询以产生错误&显示SHOW_ERRORS的输出:

SELECT anything FROM table_that_exists;

SHOW ERRORS;

如何访问用于其他过程/错误管理的数据的示例:

GET DIAGNOSTICS CONDITION 1
@P1 = MYSQL_ERRNO, @P2 = MESSAGE_TEXT;

SELECT @P1, @P2;

INSERT INTO tbl_error_log (err_no, err_msg, source_proc)
VALUES (@P1, @P2, 'sp_faulty_procedure');

SELECT * FROM tbl_error_log;