从SHOW ERRORS查询中选择特定列

时间:2013-12-30 07:21:50

标签: mysql stored-procedures

执行SHOW ERRORS时,输出中有3列(级别,代码,消息)。有没有办法选择一个特定的列(比方说,消息)而不是所有三个。

主要目的是在变量中获取错误消息(第3列)以进行进一步处理。

编辑:

错误的选择查询SHOW ERRORS之后的查询SELECT anything的结果是这样的:

    +-------+------+-------------------------------------------+
    | Level | Code | Message                                   |
    +-------+------+-------------------------------------------+
    | Error | 1054 | Unknown column 'anything' in 'field list' |
    +-------+------+-------------------------------------------+

1 个答案:

答案 0 :(得分:3)

我正在寻找mysql等同于T-SQL @@ ERROR的mysql,并遇到了你的问题。

我使用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;