1

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

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

2 回答 2

1

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

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

于 2012-09-06T13:47:36.040 回答
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;
于 2015-12-08T14:54:26.097 回答