我正在使用MySQL 5.5并使用SHOW ERRORS
来检测存储过程中的错误。但我需要将SHOW ERRORS
结果中的消息插入到我的日志表中。我该怎么做呢?。{SHOW ERRORS
结果是这样的:
Level Code Message
========================================================
Error 1146 Table 'mysql.my_table' doesn't exist
答案 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;