执行SHOW ERRORS
时,输出中有3列(级别,代码,消息)。有没有办法选择一个特定的列(比方说,消息)而不是所有三个。
主要目的是在变量中获取错误消息(第3列)以进行进一步处理。
编辑:
错误的选择查询SHOW ERRORS
之后的查询SELECT anything
的结果是这样的:
+-------+------+-------------------------------------------+
| Level | Code | Message |
+-------+------+-------------------------------------------+
| Error | 1054 | Unknown column 'anything' in 'field list' |
+-------+------+-------------------------------------------+
答案 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;